筆者目前擔任之職位中(韌體測試工程師), 有一項目, 謂之"開關機測試"
簡單來說, 就是透過外部開關來控制主機on/off狀態, 再由主機內運行腳本運行測試項目和記錄開關機次數; 最後再和外部開關所搭載之計數器比較,觀察次數是否相符.
以往都將script寫入 .bashrc; 然而這次的OS環境沒有自動登入(boot-in後不會自動開啟bash shell)導致腳本失效.
所以改用建立daemon(systemd,系統服務)的手法,並加以記錄
運行腳本的檔案結構如下:
其中"createSystemDaemon.sh"功能為建立daemon, 和產生自動指令腳本(/etc/rc.local)
"createSystemDaemon.sh"內容如下:
產生daemon configuration的具體方法見第16行:
經判斷, 如路徑下無rc-local.service文件, 就複製到路徑/etc/systemd/system/
rc-local.service中的內容:
Description
:描述daemon,表示它是為了相容/etc/rc.local
的服務
ConditionPathExists
:只有在/etc/rc.local
存在時才會啟動daemon;如果這個檔案不存在則不執行
Type=forking
:表示這是一個會產生子行程(fork)的服務,啟動後父行程會退出,子行程在背景執行
ExecStart
:daemon主要執行的內容;其中的/etc/rc.local start
,表示執行該script中寫入的指令
TimeoutSec=0
:無超時時間,也就是systemd
會等待它完成。
StandardOutput=tty
:指定標準輸出為TTY(電傳打字機,粗淺的說即是一般終端機文字界面),方便除錯時檢視狀態
RemainAfterExit=yes
:"保持存在":rc.local
執行完畢且退出,systemd仍會將此daemon標記為「仍在執行」,確保它不會被重啟或標記為失敗。
WantedBy=multi-user.target
:這表示當系統進入"多重使用者狀態"(可以理解為執行級別3)時會啟用此daemon
接著啟用daemon:
systemctl enable rc-local.service
確保systemd-service建立之後, 再建立設定檔: rc.local; 詳見第21~24行:
touch /etc/rc.local
echo \#\!\/bin\/bash >> /etc/rc.local
最後, 將 開機自動執行程序加入 rc.local中, 並給予權限
範例:
將整個資料夾複製到裝置後,直接執行createSystemDaemon.sh
即可
Command: ./createSystemDaemon.sh
進入系統後可使用以下指令檢視運行狀態
Command: systemctl status rc-local.service
Debian / Ubuntu 開機自動執行 Shell Script
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing