首先在 /home/user/startup.sh 创建你的开机启动脚本,并确保它可执行
chmod +x /home/user/startup.sh
然后为它设置一个 crontab:$ crontab -e
@reboot /home/user/startup.sh
现在你的 startup.sh 脚本将在每次启动时运行。
@reboot sh $HOME/test.sh
添加到 crontab 中甚至更加简洁。 - user3667089crontab -l
应该显示 @reboot sh $HOME/test.sh
以确认它是否已经设置。 - user3667089@reboot root sh script.sh
。 - Jurass你放在/etc/init.d/
中的文件必须设置为可执行:
chmod +x /etc/init.d/start_my_app
/etc/rc.d/
中创建一个符号链接到该文件。ln -s /etc/init.d/start_my_app /etc/rc.d/
/var/myscripts/start_my_app
#!/bin/sh
ln
命令,将此文件创建符号链接到 rc.d
目录内的一个目录中。 - meetamit/etc/rc.d
文件夹,但我有/etc/rcX.d
文件夹(例如/etc/rc0.d
,/etc/rc1.d
,/etc/rcS.d
),同时还有一个文件/etc/rc.local
。我认为您应该在自定义文件夹(如/etc/rc9.d
)或现有文件夹之一中创建符号链接... (Ubuntu Server 14.04) - Artfaith一个简单的方法是在/etc/rc.local
文件中添加一行:
/PATH/TO/MY_APP &
或者,如果你想以特定的用户身份运行命令:
su - USER_FOOBAR -c /PATH/TO/MY_APP &
(the trailing ampersand backgrounds the process and allows the rc.local to continue executing)cp /etc/init.d/skeleton /etc/init.d/your_app
并对其进行一些调整。
stop_my_app
)时,我必须使用sudo
,不是吗?此外,我想知道尾随的“&”符号的确切功能是什么。 - meetamit&
将进程在后台运行。 - Gilles Quénotinit.d
方式进行操作(您的答案只是当时对我来说更简单的解决方法)。这篇文章获得了很多浏览量和投票,因此保持准确性非常重要。 - meetamit这是我在 Red Hat Linux 系统上的操作方式。
将您的脚本放置在 /etc/init.d
中,所有权为 root 并可执行。在脚本顶部,您可以为 chkconfig
提供指令。例如,下面的脚本用于以 oracle 用户身份启动一个 Java 应用程序。
脚本的名称为 /etc/init.d/apex
#!/bin/bash
# chkconfig: 345 99 10
# Description: auto start apex listener
#
case "$1" in
'start')
su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";;
'stop')
echo "put something to shutdown or kill the process here";;
esac
这意味着此脚本必须在3、4和5级别下运行,启动/停止的优先级分别为99和10。
然后,作为用户root
,您可以使用chkconfig
在启动时启用或禁用该脚本:
chkconfig --list apex
chkconfig --add apex
你可以使用 service start/stop apex
命令。
使用sudo
输入cron
:
sudo crontab -e
添加一个命令以在启动时运行,本例中为一个脚本:
@reboot sh /home/user/test.sh
保存:
按ESC然后输入:x保存并退出,或者按ESC然后输入ZZ(即shift+zz)
测试测试测试:
在不使用cron的情况下运行您的测试脚本,确保它实际有效。
确保您已在cron中保存了您的命令,使用sudo crontab -e
重新启动服务器以确认所有内容都正常工作,sudo @reboot
sudo
。 - Melroy van den Berg/tmp
目录下吧? - Peter Mortensen@reboot
并不被广泛支持。 - Sapphire_Brick只需在您的crontab中添加一行即可。
确保该文件是可执行的:
chmod +x /path_to_you_file/your_file
编辑crontab文件:
crontab -e
你需要添加的代码行:
@reboot /path_to_you_file/your_file
就这么简单!
# uname -a Linux accton-xp70a0-26-a1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
- user5154816使用nano
或gedit
编辑器编辑/etc/rc.local
或/etc/rc.d/rc.local
文件并将您的脚本添加到其中。
sudo nano /etc/rc.local
这是修改后的内容:
#!/bin/sh
/path-to-your-script/your-scipt-name.sh
完成后按下ctrl+o
以更新,然后按Enter
再按ctrl+x
。
使文件可执行。
sudo chmod 755 /etc/rc.local
然后启动rc-local服务,在启动时运行脚本。
sudo systemctl start rc-local
你可以做到:
chmod +x PATH_TO_YOUR_SCRIPT/start_my_app
update-rc.d start_my_app defaults 100
很多关于在启动时开始某些操作的答案,但通常您希望稍后启动它,因为您的脚本依赖于例如网络。使用 at
命令来增加延迟时间,例如:
at now + 1 min -f /path/yourscript
您可以在 /etc/rc.local 中添加此内容,也可以在 cron
中添加,例如:
# crontab -e
@reboot at now + 1 min -f /path/yourscript
将cron和at组合起来不是很有趣吗? 相关信息可以在手册 man at
中找到。
至于@reboot可能不被广泛支持的评论,只需试一下即可。 我发现在支持systemd的发行版(如Ubuntu和Raspbian)中,/etc/rc.local已经过时了。
init.d
и§ЈеҶіж–№жЎҲпјҲиҝҷйҮҢпјүеә”иҜҘжҜ”rc.local
и§ЈеҶіж–№жЎҲжӣҙеҸҜеҸ–пјҢеӣ дёәеҗҺиҖ…жҳҜж—§е·Ҙе…·пјҢеҸӘиғҪ继з»ӯдҪҝз”ЁжҳҜеӣ дёәж–°е·Ҙе…·е…·жңүеҗ‘еҗҺе…је®№жҖ§гҖӮ - erikbstack