想要做到某个程序在开机的时候自动启动,就要知道系统中哪些程序或者配置文件,是每次开机都是要先运行一遍的,我们只需要想办法把程序运行的命令放到指定的位置,就可以伴随着开机后自动运行!
1 通过系统界面设置开机自动运行程序
1.1 windows系统设置开机自动运行命令
在windows系统中,可以通过任务计划程序
,把需要运行的程序命令,或者要运行的应用程序添加到一个任务中,这样在每次开机或指定的时间就可以运行该程序,具体请参考这篇博客
1.2 Linux开机设置开机自动运行命令
当然linux上也有可视化的界面,设置每次开机自动启动的应用或程序!
1、这是我的Mint系统(Ubuntu系统改造后的系统)中设置界面中的开机自启动程序
2、然后选择自定义命令
3、然后把你要运行的命令
或者程序
填写进入即可(当然你也可以写成一个bash脚本
)然后在bash脚本中定义要运行的程序!
注意:
在Jetson Nano
或Jetson Xavier NX
中并没有该设置界面
,其他的嵌入式设备我也没有尝试,如果你设备也没有类似的设置界面,那就继续往下看吧!
2 Linux中设置开机自启动python脚本程序
先说明,我要开机运行如下的程序,让每次程序开机后就自动播放一段视频,我脚本程序的路径为:/home/zhihui/test_boot_up.py
python3 test_boot_up.py
注意:
下面的所有linux开机自启动python程序
的方法,我最终都是在Jetson nano
上测试的!!!
2.1 方法一:在/etc/rc.local
中添加要运行的脚本命令
1、用vim打开/etc/rc.local
文件
sudo vim /etc /rc.local
2、在/etc/rc.local
文件中添加你要运行的命令
#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing./usr/bin/python3 /home/zhihui/test_boot_up.py &exit 0
注意:
自启动的脚本命令要放到exit 0
之前
&
:表示让命令在后台运行
,不在命令行显示,当然你不加&
也是可以的
我的/etc
目录下并没有rc.local
文件,而且我尝试这种方法在Jetson nano上是没有成功的,大家可以自行尝试
2.2 方法二:在/etc/profile
中添加要运行的脚本
2.2.1 在/etc/profile
中添加要运行的脚本
1、先创建一个脚本文件:/home/zhihui/start.sh
vim ~/start.sh
当然,这个文件你可以放在任意的位置,记住start.sh文件的路径即可!
2、在 start.sh
文件中添加要开机自启动的脚本命令
#!/bin/bashsudo python3 /home/zhihui/test_boot_up.py
3、给start.sh
文件加上可执行权限
sudo chmod +x /home/zhihui/test_boot_up.py
4、把/home/zhihui/start.sh
添加到/etc/profile
文件的末尾
sudo vim /etc/profile
然后把/home/zhihui/start.sh
添加到配置文件的末尾
5、重新启动,看看程序有没有自动启动
sudo reboot
注意:
我用这种方法可以成功自启动程序,但是有点小问题,每次打开后视频是在播放,但是界面不能够操作
还有,这种方法你需要管理员权限
2.2.2 知识拓展
1、登录shell之后启会被运行的配置文件
登录shell时,linux会按一定规则读取启动几个配置文件:
/ect/profile$HOME/.bash_profile$HOME/.bashrc$HOME/.bash_login$HOME/.profile
其中 /ect/profile
文件是系统默认
的主启动文件
,系统上每个用户登录时都会执行
;
1)命令行登录和ssh登录,shell会按照以下顺序,运行第一个被找到的文件,余下的会被忽略:
$HOME/.bash_profile$HOME/.bash_login$HOME/.profile
上面没有 $HOME/.bashrc
,因为该文件一般通过其他文件运行。
2)图形界面登录
,只加载/ect/profile
和$HOME/.profile
,其他的会被忽略。
对于no-login shell
,即图形界面打开的shell
,只会读入$HOME/.bashrc
文件,不会检查/etc/.profile
等其他登录shell文件。
2、开机自动启动的服务程序
linux随机启动的服务程序都在/etc/init.d
这个文件夹里,里面的文件全部都是脚本文件:
另外在/etc
这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d
的文件夹
,这些都是linux不同的runlevel
,我们一般进入的X windows多用户的运行级别是第5级
,也就是rc5.d
,在这个文件夹下的脚本文件
就是运行第5级时要随机启动的服务程序
。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接,也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序! 还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。Ubuntu系统运行级别: 0 系统停机状态 1 单用户或系统维护状态 2~5 多用户状态 。
2.3 方法三:添加到桌面自动启动程序中
1、创建文件:~/.config/autostart/MyScript.desktop
注意:
如果没有autosart目录
就先创建一个目录
2、然后把要开机运行的命令添加到~/.config/autostart/MyScript.desktop
的Exec
中即可,如下:
[Desktop Entry]Encoding=UTF-8Name=MyScriptComment=MyScriptIcon=gnome-infoExec=python3 /home/zhihui/test_boot_up.pyTerminal=falseType=ApplicationCategories=X-GNOME-Autostart-enabled=trueX-GNOME-Autostart-Delay=0
3、然后重启一下,看看是否会自动启动程序
sudo reboot
推荐使用这种方法
我使用这种方法可以成功运行程序!
2.3 方法四:使用crontab命令
是用crontab -e
命令,打开配置文件,然后在配置文件中加入要运行的命令:
@reboot python3 /home/zhihui/test_boot_up.py
也可以加上睡眠时间:
@reboot (sleep 30; python3 /home/zhihui/test_boot_up.py)
参考:https://www.jianshu.com/p/06b140e598e3 参考:https://blog.csdn.net/qq_29113041/article/details/78675396 参考:https://www.xz577.com/j/24992.html 参考:https://stackoverflow.com/questions/24518522/run-python-script-at-startup-in-ubuntu 参考:https://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup
欢迎大家关注笔者,你的关注是我持续更博的最大动力
原创文章,转载告知,盗版必究
微信:suihailiang0816QQ:931762054wx公众号:仰望星空的小随原文:https://juejin.cn/post/7096664418003451918