开机自启服务
目录
使用systemd来实现
https://www.cnblogs.com/jhxxb/p/10654554.html
https://www.junmajinlong.com/linux/systemd/auto_tasks_on_boot/
old methods
开机运行
将命令写到/etc/rc.local中,确保命令在最后一行的exit 0之前,否则命令不会执行
命令默认以root用户执行,若想切换用户则用su pi
例子:
//&表示在后台运行
service xxx start &
//-c "xx" 表示命令从后面的字符串读取
su pi -c "vncserver -geometry 1280x720 >> /dev/null" &
用service服务管理脚本
形如service xxx start,service xxx stop
将脚本放入/etc/init.d/目录下即可,当然脚本中要有对应的start和stop操作
可以用/etc/init.d/xx start或service xxx start,两者等效
脚本样例1:https://gist.github.com/mrowe/8b617a8b12a6248d48b8
脚本样例2:
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="sr daemon"
NAME=srwd
DAEMON=/usr/local/bin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
if [ "$#" -lt 1 ]; then
$DAEMON
echo "time: 30s"
else
$DAEMON "$1"
echo "time: $1 s"
fi
}
do_stop() {
kill -INT `cat $PIDFILE` || echo -n "sr not running"
}
do_reload() {
kill -HUP `cat $PIDFILE` || echo -n "sr can't reload"
}
case "$1" in
start)
echo "Starting $DESC: $NAME"
if [ "$#" -lt 2 ]; then
do_start
else
do_start "$2"
fi
;;
stop)
echo "Stopping $DESC: $NAME"
do_stop
;;
reload|graceful)
echo "Reloading $DESC configuration..."
do_reload
;;
restart)
echo "Restarting $DESC: $NAME"
do_stop
do_start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
注
/var是存放运行时相关文件的目录,如/var/log存放的是日志文件,/var/run存放的是运行时文件如xx.pid存放pid号
/tmp存放的是临时文件
bash参数个数"$#" $0为文件名 $1为第一个参数。若xx.sh arg1 arg2则"$#"为2而不是3,但其参数共有三个:$0,$1,$2