作者chang0206 (Eric Chang)
看板Linux
標題[問題] @reboot in crontab 的問題
時間Tue Jul 30 16:49:22 2019
最近在測試用PXE+preseed 遠端自動安裝ubuntu 18.04
本來想在preseed 中加入完成安裝後,送出通知信件給管理者
我加入
d-i preseed/late_command \
in-target hostname |mail -s "install complete"
[email protected] ;\
in-target passwd --expire root ;\
這樣的語法,下面那段會正常執行
但是上面那行沒辦法送出郵件,也看不到log 發生什麼事
所以想改用另外的方式
因為pxe 安裝完後,client 會重開機
所以我想說在重開機之後,送出信件通知管理者
翻了一下文件
說是可以在crontab 文件中,用@reboot 來指定重開機後的動作
可是我把這個語法加入 /etc/crontab 或者是 /etc/cron.d/after_reboot
都沒有作用
但是如果用某個user登入,然後用crontab -e 編輯這個user的crontab
加入一樣的語法
那就可以正常被執行
所以看來這個 @reboot 只能放在user個人的crontab 中?
要讓系統可以重開機後就執行,需要修改 /etc/rc.local ?
只是在pxe 中,要修改 /etc/rc.local 挺麻煩的說...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.234.104 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1564476564.A.D8C.html
1F:推 CMJ0121: 要不要改用 systemd 呢 07/30 17:26
3F:推 hijkxyzuw: 不是所有的 cron 都支援 @reboot 這個關鍵字 07/30 20:15
4F:→ chang0206: 回樓上,看起來似乎如此 不過沒找到文件說明... 07/31 10:12
6F:→ chang0206: 是的,不管是/etc/cron.d /etc/crontab 都一樣不能用 07/31 15:32
7F:→ chang0206: @reboot ,但是只要加在user的crontab就可以 07/31 15:32
8F:→ chang0206: 不對,應該說 只要用某帳號登入 然後輸入crontab -e 07/31 15:32
9F:→ chang0206: 這樣子用@reboot 才有作用..然後真的文件都沒說到這塊 07/31 15:33
10F:推 Gold740716: user 竟然有用,有點離奇 08/01 08:52
11F:→ chang0206: 黑啊 超神奇 反而是系統的crontab不支援... 08/01 10:11
12F:→ chang0206: BTW 後來還是用硬幹rc.local解決.. 08/01 10:12
13F:推 holishing: 一次性應付而言rc.local滿直覺的,如果每次重開都要或 08/02 00:44
14F:→ holishing: 有類似的固定需求的話或許可以寫寫看systemd unit 08/02 00:44
15F:→ chang0206: 沒有唷 rc.local每次開機都會被執行,但是我只要執行 08/02 11:23
16F:→ chang0206: 一次,所以要動點手腳 08/02 11:23
17F:→ fourdollars: 要不寫個簡單的 backend 程式放在某個公開的伺服器? 08/02 17:00
18F:→ fourdollars: 然後去 wget 一下,也可以順便 POST 什麼資料上去。 08/02 17:00
19F:→ chang0206: 有,本來有想這樣做 不過因為rc.local解決了 就暫時不 08/02 17:23
20F:→ chang0206: 改了,不然我覺得這個應該是比較好的方法 08/02 17:23