让脚本在引导时运行,而不是在登录时运行


11

每当计算机启动时,如何在登录之前如何运行特定脚本(最好不是超级用户)运行。它可能是在启动时运行的最后一件事。我主要只是希望脚本即使没有用户登录也能正常工作。


1
@bruce看看这个的- > askubuntu.com/questions/9382/...
hhlp

1
您可以使用upstart或cron,也可以使用其他方法。要知道的一件事是它可以运行多。例如,它是否需要挂载特定的文件系统,是否需要运行X,是否需要DBus,是否需要网络连接?或者更一般地说,需要联网:是否需要任何资源?
2010年1

@JanC:是的,实际上它几乎需要您所要求的一切(X除外),这就是为什么我希望它成为最后要运行的东西。确实也没有理由更早地运行它。
马拉巴巴

@hhlp:太好了,谢谢。但是,如果使用该方法,脚本将运行多早?正如我上面提到的,最好将其作为最后一件事情(登录之前)。
马拉巴巴

好吧,登录不需要联网,除非您要登录到终端服务器和/或将$ HOME放在网络共享上... ;-)
2010年

Answers:


8

我建议使用cron。的特殊时间值@reboot将以您的用户身份在每次重新启动时产生您的作业。例如,运行crontab -e并使用:

@reboot /home/yourself/bin/some_script_to_run

有关特殊时间格式的更多详细信息,请参见 man 5 crontab


谢谢,这似乎很容易。这不依赖于哪个用户创建了cronjob吗?它在引导结束时运行,无论是否登录?
马拉巴巴2010年

这完全取决于谁创建了cronjob-它会以该用户身份运行。不过,这并不取决于他们可以登录了。
基斯库克

请记住,这会在cron守护程序启动时运行脚本,因此有可能使您可能需要的其他系统尚未就绪。
PhoneixS

4

一种可能性是使用Upstart。这使您可以根据依赖关系来指定何时要运行脚本,例如“何时挂载文件系统并且网络接口eth0已启动并正在运行”。创建一个包含以下内容的文件/etc/init/bruce_script.conf(您需要以根用户身份创建文件):

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

有关更多信息,请查阅新贵文档,尤其是在init(5)手册页中,可以找到该配置文件中的内容列表。


是否有可以使用的暴发户事件列表?
海滨

@Markus:不是我所知道的。标准事件在第7节(so dpkg -L upstart |grep /man7/)中有一个手册页,您可以在中查看现有脚本发出的事件并将其用作触发器/etc/init
吉尔斯(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.