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

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/bash
sudo 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-8
Name=MyScript
Comment=MyScript
Icon=gnome-info
Exec=python3 /home/zhihui/test_boot_up.py
Terminal=false
Type=Application
Categories=

X-GNOME-Autostart-enabled=true
X-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

欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究

微信:suihailiang0816
QQ:931762054
wx公众号:仰望星空的小随
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐