首页>>人工智能->Linux开机自动启动python脚本程序,或 Jetson nano或Jetson Xavier NX开机自动启动python脚本程序

Linux开机自动启动python脚本程序,或 Jetson nano或Jetson Xavier NX开机自动启动python脚本程序

时间:2023-11-29 本站 点击:1

想要做到某个程序在开机的时候自动启动,就要知道系统中哪些程序或者配置文件,是每次开机都是要先运行一遍的,我们只需要想办法把程序运行的命令放到指定的位置,就可以伴随着开机后自动运行!

1 通过系统界面设置开机自动运行程序

1.1 windows系统设置开机自动运行命令

在windows系统中,可以通过任务计划程序,把需要运行的程序命令,或者要运行的应用程序添加到一个任务中,这样在每次开机或指定的时间就可以运行该程序,具体请参考这篇博客

1.2 Linux开机设置开机自动运行命令

当然linux上也有可视化的界面,设置每次开机自动启动的应用或程序!

1、这是我的Mint系统(Ubuntu系统改造后的系统)中设置界面中的开机自启动程序

2、然后选择自定义命令

3、然后把你要运行的命令或者程序填写进入即可(当然你也可以写成一个bash脚本)然后在bash脚本中定义要运行的程序!

注意:

Jetson NanoJetson 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.desktopExec中即可,如下:

[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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/AI/1188.html