簡體   English   中英

為Ubuntu編寫啟動腳本

[英]Writing startup script for Ubuntu

注意 :我確實考慮過在AskUbuntu網站上提出這個問題,但是相信它是一個腳本/編程問題的核心,因此值得在這里。

我每次打開Ubuntu桌面時都試圖使用upstart來運行腳本。 具體來說,我想每隔30秒ping一次我的路由器(原因超出了本問題的范圍)。

我閱讀了upstart教程 ,並閱讀了一些來自互聯網的示例文章。 我打算編寫並將腳本保存到名為/etc/init/heartbeat.conf的文件中,我認為這是新手腳本的正確位置和文件擴展名(如果我錯了請糾正我)。

這是該腳本的內容(我已經從各種教程/示例在線一起攻擊):

start on started network-manager
script
    ping -i 30 192.168.1.1 | cat >> ~/heartbeat/ping.log
end script

當我啟動我的機器時,我沒有得到任何GUI / gnome相關的錯誤,並且在/var/log/syslog沒有看到任何內容,但我也沒有在~/heartbeat/ping.log看到任何ping輸出~/heartbeat/ping.log 我哪里誤入歧途? 提前致謝!

新手腳本/etc/init.d/heartbeat.conf的位置是正確的,但腳本還有其他一些問題:

  • 推薦的啟動腳本的方法是:

    start on filesystem and net-device-up IFACE!=lo

    這將忽略lo (loopback)接口,並且還將確保在腳本運行之前掛載文件系統(因為您正在寫入文件)

  • 你給路徑~/heartbeat/ping.log 但該腳本將以root用戶身份運行,而不是您的用戶! 因此,檢入您的主文件夾將無法正常工作。 通常情況下,upstart腳本不會像你期望的那樣尊重~ 所以總是使用完整的路徑

  • 如果一個名為heartbeat的文件夾不存在,則ping命令本身會拋出一個錯誤,說~/heartbeat: no such file or directory 該目錄必須存在才能使重定向成功

這是更新的腳本:

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
script
  ping -i 30 192.168.1.1 >> /full/path/to/ping.log 2>&1
end script

可選項:

  • 你真的需要一個| cat | cat在原來的ping命令?

  • 檢查/var/log/upstart/heartbeat.log以獲取實際的upstart日志。 如果script部分本身沒有成功,則錯誤消息將出現在此日志文件中。

編輯:錯字,啟動更好,重定向錯誤也發送到日志文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM