法1.在/etc/rc.local里添加程序的执行命令,要是全路径的,rc.local是不能起qt界面程序的
法2.在用户的HOME目录下有.config/autostart目录,这里添加xxx.desktop文件,并加执行权限,调用的程序也要有执行权限
文件内容例如下:
#!/usr/bin/env xdg-open #这是调用xdg-open命令
[Desktop Entry]
Version=1.0
Name=PIS #名字
Comment=pis monitor #鼠标经过时的描述
Exec=/home/mission/start.sh #启动后调用的程序
StartupNotify=false
Terminal=false #是否使用终端
Type=Application #类型
OnlyShowIn=GNOME;Unity;
X-Desktop-File-Install-Versioin=0.20
Name[zh_CN]=pis #中文名
法3.设置启动应用程序
打开 “Startup Applications Preferences”(启动应用程序首选项)。你可以按下 Ctrl + Alt + T 组合键打开终端,然后输入以下命令打开它:
gnome-session-properties
1
在 “Startup Applications”(启动应用程序)对话框中,点击 “Add”(添加)按钮
法4.利用定时任务crontab开机自启
crontab -e
写入
@reboot /home/mission/start.sh &
就可以在开机时启动脚本,但是刚开始是不能起动界面程序的,可能环境变量没有准备好,所以脚本要是循环拉才行,每次都设置一下环境变量
#!/bin/sh
APP_RUN_PATH=/home/mission/PisPlayer
APP_NAME=StationPisPlayer
SLEEP_TIME=10
cd $APP_RUN_PATH
while true; do
#### export VLC_PLUGIN_PATH#########
export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins/
export DISPLAY=:0.0
#check the process
pidof $APP_NAME
if [ $? != 0 ]; then
if [ -f $APP_RUN_PATH/$APP_NAME ] ; then
logger "call 2222222222222222222"
$APP_RUN_PATH/$APP_NAME &
sleep $SLEEP_TIME
else
exit 0
fi
fi
sleep $SLEEP_TIME
done
法5.还是定时任务,设置1分钟执行一次
*/1 * * * * /home/mission/PisPlayer/start.sh &
脚本就是
#!/bin/bash
export DISPLAY=:0.0
logger "call ------------------------------"
APP_RUN_PATH=/home/mission/PisPlayer
APP_NAME=StationPisPlayer
SLEEP_TIME=10
echo $$
pidof $APP_NAME
if [ $? -eq 1 ]; then
logger "call test1 ------------------------------"
export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins/
cd $APP_RUN_PATH
$APP_RUN_PATH/$APP_NAME &
fi
法6.定时任务带root权限
vi /etc/crontab
*/1 * * * * root pidof StationPisPlayer || [ $? -ne 0 ] && cd /home/firefly/shanghaishiyuline/build && ./StationPisPlayer &
法7.定时任务开启脚本后台运行,如果脚本已经调用,则不再重复调用
* * * * * /home/mission/cpp/controlScreen.sh &
脚本里加了
num=`ps -ef|grep "controlScreen.sh" |grep -v grep|wc -l`
echo "num=$num"
if [ $num != "2" ] ;then
exit 0
fi
我用日志记录grep的内容发现只有一行,不懂为什么会是2
ps -ef|grep "controlScreen.sh" |grep -v grep >1.log
cat 1.log
mission 53378 2628 0 14:47 pts/2 00:00:00 /bin/bash ./controlScreen.sh