2011-04-06 59 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