centOS中
方法1:/etc/rc.local
/etc/rc.local是rc.d/rc.local的软链
1、在自己需要启动的文件目录中编写一个shell脚本文件auto_run_script.sh
(文件名称你们随意)。我的这个timeTest
文件是timeTest.cpp
编译过来的。主要是过几秒打印一下时间。最好先验证一下你自己写的这个脚本能不能运行。
#!/bin/bash
cd /root/
./timeTest >> /root/output.txt
sleep 3
date >> /root/output.txt
随后需要给这个文件可执行的权限
chmod 777 auto_run_script.sh
2、在centOS7中我是看到了这个东西,但是ubanto中好像没有看到。
vim /etc/rc.local
打开这个文件之后在末尾添加(这样开机之后就会运行你自己的脚本了。其他的脚本也是一样)
/root/auto_run_script.sh
随后需要给这个文件可执行的权限
chmod 777 /etc/rc.local
3、重启
reboot
4、查看是否执行了开机自启命令
cat output.txt
方法2:使用 crontab
大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。
我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot
,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。
那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。
crontab -e
@reboot /home/ok/auto_run_script.sh
然后,直接重启即可。运行的效果跟上面类似。
方法三:使用 systemd 服务
这个我没试,大家感兴趣的话可以自己试试。
Ubuntu中
方法一:普通执行文件
1.首先创建脚本文件
如下面的start.sh,
#!/bin/sh
cd ~/test_ws/src/server/
#./server >> output.text
gnome-terminal -- bash -c "cd ~/test_ws/src/server/;./server; exec bash"
#sleep 3
gnome-terminal -- bash -c "sleep 3;cd ~/test_ws/src/server/;python3 client_camera.py --shell; exec bash"
2.给脚本添加可执行权限
因为刚创建的.sh文件是不可执行的,需要添加权限才可执行,添加方法很见单,使用chmod命令即可
chmod +x start.sh
或者
chmod 777 start.sh
3.在终端中运行脚本进行测试
打开终端,进入脚本所在路径,运行
./start.sh
终端输出正常的运行结果,测试有效.
4.在新的终端运行
在之前的步骤之后,即使添加到了开机自启动,就算运行,也不能看出来是否真的在运行,甚至可能就没有在运行,也可能运行之后瞬间结束,为此,可以采用打开一个新终端加延时的方式运行,修改start.sh脚本:
其中gnome-terminal -x bash -c
会打开一个新的bash终端并执行c后面的语句,语句用’; ;;’,隔开,最后的sleep 5表示延迟5秒退出,这样就可以在新的终端看到运行效果,添加这个延时是为了方便验证是否启动程序或者节点
!注意,如果是ubuntu 18.04的系统,gnome-terminal -x bash -c
(这个新系统已经不用了包括,gnome-terminal -e bash -c
都已经弃用了)需要改写成gnome-terminal -- bash -c
在完成了上述步骤之后,可以将脚本添加到ubuntu开机启动管理器里头,具体操作如下:
1.打开ubuntu启动管理器
在终端输入gnome-session-properties
运行,会打开一个界面,这里记录着系统上层应用的启动软件:
可以根据需要点击Add将对应的启动项目加进来,启动项可以是脚本,这里以脚本为例,把上面的start.sh
脚本添加到启动项里来
2.添加执行项目
点击Add
按键
输入相应的信息,这里Name
和Comment
都可以自己随意设置,只是对启动项的一个说明,中间的Command
才是要运行的内容,可以点击Browse
…来进行选择,这里就选择刚刚的那个脚本文件(注意脚本文件一定要有可执行的权限).
最后点击Add就可以了,界面中就会多了一项刚刚设置的内容
3.重启测试
点击重启就可以测试了,会发现开机之后确实打开了一个新的终端,并运行了脚本里的程序.
由于一般设备都设置了密码,而管理器里的这些程序,是需要登录之后才可以进行的,所以,可以将设备设置为自动登录,具体的方法如下:
A. 进入系统设置==>用户设置
B.设置自动登录
按照如下的顺序进行设置
引用:
1、LINUX系统如何设置开机自动运行脚本?
2、CSDN博主「北方南方2020」的原创文章,原文链接:https://blog.csdn.net/baidu_34319491/article/details/106456571