2011-04-06 104 views
2

我有安裝了Fedora 14的AWS AMI。我沒有root訪問權限,但我可以使用sudo做任何事情。我有一個腳本,我想在機器啓動時運行 - myScript.sh如何在Fedora 14機器啓動時運行腳本

通過調用sudo /dir/dir/myScript.sh start調用此腳本。它也支持我經常使用的命令stopstatus

在啓動時運行這樣的腳本的理想方式是什麼?

+0

'sudo'訪問通常意味着root訪問,因爲'sudo'可以讓你以root身份運行命令。 – Blender 2011-04-06 22:13:06

+2

這屬於serverfault – SiegeX 2011-04-06 22:14:45

回答

1

你有容易獲得幾個機制:

最常見的兩種機制:

添加一個upstart job definition文件。這看起來很簡單,但確實會限制可以將您提供的腳本用於少數新的腳本(Ubuntu,Google的Chrome發行版,Fedora,可能是RHEL?)的發行版。

添加一個sysv-init initscript。 init-scripts很難編寫,但在爲系統管理員提供更多命令行參數方面有更大的靈活性。他們也得到了幾乎無處不在的支持,甚至是已經將其(部分或大部分)原稿轉換爲Upstart工作的發行版。

我沒有經常看到它,它比軟件開發人員的選擇更像是一個系統管理員選擇,但您也可以使用系統Vixie cron(8)工具在啓動時啓動程序。

您可以將條目添加到/etc/cron.d/*中的系統crontab; Vixie cron支持@reboot說明符,這對於此任務非常有用。

或者,您可以將條目添加到您自己的個人文件crontab(5);再次,Vixie cron的@reboot也適用於用戶,但是您不能從crontab(5)運行交互式sudo(8)。如果您想使用您自己的個人crontab(5)文件,請參閱sudoers(5)中的NOPASSWD文檔,但要警告該計算機上的其他管理員可能會討厭此想法。

+0

我不確定。但是不值得添加/放置這些腳本Upstart/sysv-initscript的位置嗎? – 2014-08-04 05:00:58

+0

@BedingedFingers:好主意。由於這個答案是寫的,systemd也出來了,並且改變了幾個發行版的答案,並且應該妥善解決...... – sarnold 2014-08-07 01:07:15

3

我認爲最簡單和最普遍的方法(儘管比@ sarnold的建議更不靈活)是將/dir/dir/myScript.sh start添加到/etc/rc.local。該腳本將在所有其他啓動腳本運行後在啓動時運行。

+2

請注意,Fedora 16默認不會使用'rc.local',但[它可以手動添加](http://scrye.com/wordpress-mu/nirik/2012/03/30/rc-local-in-fedora/)。 – 2012-05-16 05:27:12