一、无界面的程序自启动
/etc/rc.local
1、编辑 /etc/rc.local
vi /etc/rc.local
2、添加要执行的命令 在exit 0 之前
注意:这里的执行命令都必须是全路径的,就算你添加到了 PATH 路径,自启动的时候,也是识别不到的(因为启动顺序是 /etc/rc.local -> /etc/profile )
注意:rc.local的启动是在用户登录之前,对于整个系统开机而言的启动程序执行,当程序执行完成后才会进入用户界面,所以当开机启动项过多,那么系统开机的时间就会变长。并且rc.local只能运行命令行程序,无法运行带界面的程序,运行带界面的程序会报错无法运行然后直接跳过该程序。
如果 rc.local脚本没有被运行 参考
二、有界面的程序自启动
方法一:/etc/xdg/autostart
1、在/etc/xdg/autostart/目录下新建test.desktop
sudo touch /etc/xdg/autostart/test.desktop
2、赋予test.desktop权限
sudo chmod 777 /etc/xdg/autostart/test.desktop
3、编辑test.desktop
输入以下内容:
[Desktop Entry]
Type=Application
Name=test
Exec=/opt/test.sh ///执行的脚本路径
方法二:在crontab中设置
crontab -e
@reboot /home/user/test.sh
每次登录自动执行 test.sh
方法三:在/etc/profile.d/目录下新建sh脚本
将脚本赋值到/etc/profile.d/目录下 并赋值777权限
/etc/profile会遍历/etc/profile.d/*.sh
附:守护
进程脚本 test.sh
任务1 :连接wifi
任务2:设置静态ip
任务3:有且只有一个指定进程在运行
#!/bin/sh
echo "connect wifi jbyyy"
echo topeet|sudo -S nmcli dev wifi connect "jbyyy" password "5277"
echo "open eth0"
sudo ifconfig eth0 192.168.1.207
echo "qt demo"
PRO_NAME=/home/topeet/Desktop/myTest
while true ; do
NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`
echo ${NUM}
if [ "${NUM}" -lt "1" ];then
echo "${PRO_NAME} was killed"
$PRO_NAME &
elif [ "${NUM}" -gt "1" ];then
echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}"
killall -9 $PRO_NAME
$PRO_NAME &
fi
NUM_STAT=`ps aux | grep ${PRO_NAME} | grep T | grep -v grep | wc -l`
if [ "${NUM_STAT}" -gt "0" ];then
killall -9 ${PRO_NAME}
$PRO_NAME &
fi
sleep 5
done
exit 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)