目录

开机自启服务

使用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