我有安装了Fedora 14的AWS AMI。我没有root访问权限,但我可以使用sudo
做任何事情。我有一个脚本,我想在机器启动时运行 - myScript.sh
。如何在Fedora 14机器启动时运行脚本
通过调用sudo /dir/dir/myScript.sh start
调用此脚本。它也支持我经常使用的命令stop
和status
。
在启动时运行这样的脚本的理想方式是什么?
我有安装了Fedora 14的AWS AMI。我没有root访问权限,但我可以使用sudo
做任何事情。我有一个脚本,我想在机器启动时运行 - myScript.sh
。如何在Fedora 14机器启动时运行脚本
通过调用sudo /dir/dir/myScript.sh start
调用此脚本。它也支持我经常使用的命令stop
和status
。
在启动时运行这样的脚本的理想方式是什么?
你有容易获得几个机制:
最常见的两种机制:
添加一个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
文档,但要警告该计算机上的其他管理员可能会讨厌此想法。
我不确定。但是不值得添加/放置这些脚本Upstart/sysv-initscript的位置吗? – 2014-08-04 05:00:58
@BedingedFingers:好主意。由于这个答案是写的,systemd也出来了,并且改变了几个发行版的答案,并且应该妥善解决...... – sarnold 2014-08-07 01:07:15
我认为最简单和最普遍的方法(尽管比@ sarnold的建议更不灵活)是将/dir/dir/myScript.sh start
添加到/etc/rc.local。该脚本将在所有其他启动脚本运行后在启动时运行。
请注意,Fedora 16默认不会使用'rc.local',但[它可以手动添加](http://scrye.com/wordpress-mu/nirik/2012/03/30/rc-local-in-fedora/)。 – 2012-05-16 05:27:12
'sudo'访问通常意味着root访问,因为'sudo'可以让你以root身份运行命令。 – Blender 2011-04-06 22:13:06
这属于serverfault – SiegeX 2011-04-06 22:14:45