Linux下添加开机启动任务

测试系统:Debian 8.3

1.相关背景知识

1.1 系统启动级别

$ sudo runlevel
N 5

运行级别即操作系统当前正在运行的功能级别。
这个级别从1到6 ,具有不同的功能。
不同的运行级定义如下:
  # 0 - 停机
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 多用户图形模式(xwindow)
  # 6 - 重新启动

1.2 系统启动初始化配置

rc*.d 和 rc.local 目录是系统初始化配置目录,系统初始化都在这里加载:

$ ls -l /etc/rc3.d
lrwxrwxrwx 1 root root 14 Sep 12  2012 K91capi -> ../init.d/capi
lrwxrwxrwx 1 root root 25 Sep 12  2012 K99readahead_later -> ../init.d/readahead_later
lrwxrwxrwx 1 root root 23 Sep 12  2012 S00microcode_ctl -> ../init.d/microcode_ctl
lrwxrwxrwx 1 root root 22 Sep 12  2012 S02lvm2-monitor -> ../init.d/lvm2-monitor

注:K开头的服务被关闭,S开头的服务被开启,K在S开始之前执行,在执行过程中按照数字来定义优先级,数字越低优先级越高。

从上面的实例可以看到,该目录下的文件其实都是指向 ../init.d 目录下的软连接

init.d 是所有的初始化文件的存放目录,初始化脚本应该放在这里,然后在相应的配置目录 /etc/rc*.d 建立软连接:

$ ls -l /etc/init.d
-rwxr-xr-x 1 root root     1566 Dec 17  2009 acpid
-rwxr-xr-x 1 root root     1441 Dec 18  2006 anacron
-rwxr-xr-x 1 root root     1284 Nov 16  2009 atd
-rwxr-xr-x 1 root root     3328 Dec 10  2009 auditd
-rwxr-xr-x 1 root root     3052 Mar 16  2010 autofs

2.创建一个开机启动脚本

2.1 在 /etc/init.d 下创建脚本,修改脚本操作权限为可执行

$ sudo vi startRun.sh
#!/bin/sh
### BEGIN INIT INFO
# Provides:          startRun
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:    $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start run script
### END INIT INFO
nohup java -jar /home/windyofsky/RunTest.jar > /home/windyofsky/test1.log &
echo "SUCCESS" > /home/windyofsky/test2.log

  注意,脚本中的初始化信息必须要有,否则不会被执行的。

$ sudo chmod 755 startRun.sh

  修改脚本为可执行。

2.2 创建初始化配置的软连接

$ sudo ln -s /etc/init.d/startRun.sh /etc/rc3.d/S900startRun

  这里,我将脚本放到了rc3.d中,并设为S900;通常应该放在级别3~5中,太早可能会因为一些服务尚未启动而执行失败。

2.3 重启系统,查看效果

$ cat /home/windyofsky/test1.log
$ cat /home/windyofsky/test2.log

 

posted @ 2016-04-27 13:42  风轻天空  阅读(1669)  评论(0编辑  收藏  举报