@reboot in crontab 的問題 - Linux

Table of Contents

最近在測試用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 挺麻煩的說...


--

All Comments

Una avatarUna2019-07-31
要不要改用 systemd 呢
https://askubuntu.com/questions/919054
Susan avatarSusan2019-08-05
不是所有的 cron 都支援 @reboot 這個關鍵字
Una avatarUna2019-08-09
回樓上,看起來似乎如此 不過沒找到文件說明...
Erin avatarErin2019-08-14
Blanche avatarBlanche2019-08-18
是的,不管是/etc/cron.d /etc/crontab 都一樣不能用
@reboot ,但是只要加在user的crontab就可以
不對,應該說 只要用某帳號登入 然後輸入crontab -e
Rachel avatarRachel2019-08-21
這樣子用@reboot 才有作用..然後真的文件都沒說到這塊
Rachel avatarRachel2019-08-22
user 竟然有用,有點離奇
Ida avatarIda2019-08-23
黑啊 超神奇 反而是系統的crontab不支援...
Damian avatarDamian2019-08-26
BTW 後來還是用硬幹rc.local解決..
Valerie avatarValerie2019-08-28
一次性應付而言rc.local滿直覺的,如果每次重開都要或
有類似的固定需求的話或許可以寫寫看systemd unit
Lucy avatarLucy2019-09-01
沒有唷 rc.local每次開機都會被執行,但是我只要執行
一次,所以要動點手腳
Todd Johnson avatarTodd Johnson2019-09-06
要不寫個簡單的 backend 程式放在某個公開的伺服器?
然後去 wget 一下,也可以順便 POST 什麼資料上去。
Sarah avatarSarah2019-09-09
有,本來有想這樣做 不過因為rc.local解決了 就暫時不
改了,不然我覺得這個應該是比較好的方法