Linux开机启动执行脚本
方法 1:rc.local
文件位置在 /etc/rc.local
。比较简单的方法,但是有些 linux 版本不支持,例如 debian 默认没有 rc.local 这个文件,但是有这个服务,并且这个服务是关闭的。
注意:/etc/rc.local 和/etc/rc.d/rc.local 区别在于,/etc/rc.local 是/etc/rc.d/rc.local 的软连接
1)使用方式
|
|
2)简单测试一下
先创建一个文件:touch /root/111.txt
,在 rc.local 文件后面添加命令 /bin/echo "abc11" > /root/111.txt
,重启验证,查看命令是否执行。
重启后
3)debian 系统没有 rc.local 怎么办
debian 虽然默认没有 rc.local 这个文件,但是有这个服务,并且这个服务是关闭的。
手动创建 /etc/rc.local
文件,写入以下内容
|
|
然后赋予权限
|
|
启动 rc-local
服务,并设置为开机自启动。有警告不用管
|
|
然后你就可以把需要开机启动的命令添加到 /etc/rc.local
文件,丢在 exit 0
前面即可,并尝试重启以后试试是否生效了。
方法 2:systemd
参考: https://blog.csdn.net/lu_embedded/article/details/132424115
Linux 的 service 脚本一般存放在 /etc/systemd/ 和 /usr/lib/systemd 路径下,前者包含着多个 . target. wants 文件,如 multi-user. target. wants 等;而后者为安装软件生成 service 的目录,一般编写自己的 service 可以放在此目录下。但需要注意的是,位于 /usr/lib/systemd/ 中服务脚本可能会在下次更新时被覆盖。
无论是 /etc/systemd/ 还是 /usr/lib/systemd 目录,其中又包含 system 和 user 目录。前者是系统服务,开机不需要用户登录即可运行的服务;后者是用户服务,需要用户登录后才能运行的服务
在/etc/systemd/system/目录下创建一个 test.service
|
|
完成服务脚本编写后,需要执行以下命令重新加载所有的 systemd 服务,否则会找不到 service 服务。
|
|
问题:超时报错,服务停止运行。有时脚本文件中特意设置很长的等待时间或要完成任务的时间本身就很长,如果在后台服务脚本中直接执行该脚本,就会收到超时信息,服务自动终止,这是我所不希望看到的
|
|
方法 3:init.d
参考: https://blog.csdn.net/weixin_43425561/article/details/131447216
方法 4:cron
通过定时任务执行命令或脚本。
|
|
重启后,查看 111.txt 文件