对于系统里面设置的开机启动程序

先来看一个例子nginx启动脚本

  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: nginx
  4. # Required-Start: $local_fs $remote_fs $network $syslog
  5. # Required-Stop: $local_fs $remote_fs $network $syslog
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: starts the nginx web server
  9. # Description: starts nginx using start-stop-daemon
  10. ### END INIT INFO
  11. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  12. DAEMON=/usr/sbin/nginx
  13. NAME=nginx
  14. DESC=nginx
  15. # Include nginx defaults if available
  16. if [ -f /etc/default/nginx ]; then
  17. . /etc/default/nginx
  18. fi
  19. test -x $DAEMON || exit 0
  20. set -e
  21. . /lib/lsb/init-functions
  22. test_nginx_config() {
  23. if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
  24. return 0
  25. else
  26. $DAEMON -t $DAEMON_OPTS
  27. return $?
  28. fi
  29. }
  30. case "$1" in
  31. start)
  32. echo -n "Starting $DESC: "
  33. test_nginx_config
  34. # Check if the ULIMIT is set in /etc/default/nginx
  35. if [ -n "$ULIMIT" ]; then
  36. # Set the ulimits
  37. ulimit $ULIMIT
  38. fi
  39. start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
  40. --exec $DAEMON -- $DAEMON_OPTS || true
  41. echo "$NAME."
  42. ;;
  43. stop)
  44. echo -n "Stopping $DESC: "
  45. start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
  46. --exec $DAEMON || true
  47. echo "$NAME."
  48. ;;
  49. restart|force-reload)
  50. echo -n "Restarting $DESC: "
  51. start-stop-daemon --stop --quiet --pidfile \
  52. /var/run/$NAME.pid --exec $DAEMON || true
  53. sleep 1
  54. test_nginx_config
  55. start-stop-daemon --start --quiet --pidfile \
  56. /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
  57. echo "$NAME."
  58. ;;
  59. reload)
  60. echo -n "Reloading $DESC configuration: "
  61. test_nginx_config
  62. start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
  63. --exec $DAEMON || true
  64. echo "$NAME."
  65. ;;
  66. configtest|testconfig)
  67. echo -n "Testing $DESC configuration: "
  68. if test_nginx_config; then
  69. echo "$NAME."
  70. else
  71. exit $?
  72. fi
  73. ;;
  74. status)
  75. status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
  76. ;;
  77. *)
  78. echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
  79. exit 1
  80. ;;
  81. esac
  82. exit 0

如果我们需要按照系统里面的格式创建文件我们可以使用sudo update-rc.d minidlna defaults来将程序加到默认的启动程序里面, 在/etc/rcx.d里面将创建软连接

如果遇到如下提示System start/stop links for /etc/init.d/minidlna already exist.说明这个文件已经存在,我们可以直接使用这个命令更新下sudo update-rc.d minidlna enable

使用rc.local 实现开机启动

查看/etc/rcx.d文件夹里面的文件

  1. root@Test1:/tmp/nginx# ls -l /etc/rc3.d/
  2. total 4
  3. -rw-r--r-- 1 root root 677 Jul 27 2012 README
  4. lrwxrwxrwx 1 root root 17 Sep 23 2016 S10vboxadd -> ../init.d/vboxadd
  5. lrwxrwxrwx 1 root root 27 Sep 23 2016 S20nfs-kernel-server -> ../init.d/nfs-kernel-server
  6. lrwxrwxrwx 1 root root 21 Sep 23 2016 S30vboxadd-x11 -> ../init.d/vboxadd-x11
  7. lrwxrwxrwx 1 root root 25 Sep 23 2016 S35vboxadd-service -> ../init.d/vboxadd-service
  8. lrwxrwxrwx 1 root root 15 Sep 23 2016 S50rsync -> ../init.d/rsync
  9. lrwxrwxrwx 1 root root 19 Sep 23 2016 S70dns-clean -> ../init.d/dns-clean
  10. lrwxrwxrwx 1 root root 18 Sep 23 2016 S70pppd-dns -> ../init.d/pppd-dns
  11. lrwxrwxrwx 1 root root 14 Sep 23 2016 S75sudo -> ../init.d/sudo
  12. lrwxrwxrwx 1 root root 21 Sep 23 2016 S99grub-common -> ../init.d/grub-common
  13. lrwxrwxrwx 1 root root 18 Sep 23 2016 S99ondemand -> ../init.d/ondemand
  14. lrwxrwxrwx 1 root root 18 Sep 23 2016 S99rc.local -> ../init.d/rc.local

可以看到这些都是链接文件,指向/etc/init.d文件夹

这里的S开头的文件代表开机启动,后两位数字越小越先执行, 还有一个是K开头的文件代表进入改运行级别时关闭程序,后两位数字越小越先执行

注意最后一个文件S99rc.local,在各个运行基本都有,这是开机过程中最后运行的程序,可以将需要开机运行的程序写到这里面vim /etc/rc.local

示例:开机时添加一条iptables规则

  1. sh /home/ivan/iptables.sh
  2. echo 'Iptable Configured!'

同时注意需要确保你需要执行的程序写在 exit 0的前面, 写在之后将不起作用

使用定时任务crontab来曲线实现开机启动

这里以crontab重启时执行命令为例,通过crontab -e编辑自己的cron @reboot /path/to/script这将在重启时运行.

使用upstart的开机启动

upstart开机将会运行所有/etc/init目录下的脚本(以.conf结尾的文件),这些程序将以root身份运行

同时upstart提供了~/.config/upstart文件,当用户登陆时运行

一些桌面环境提供的自动运行

gnome和kde这些桌面程序也提供自动启动程序,可以直接使用图形化设置,也可以直接编辑配置文件

添加linux开机启动任务的更多相关文章

  1. linux 开机启动过程详解

    Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...

  2. linux开机启动

    开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...

  3. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  4. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  5. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  6. linux开机启动脚本

    linux开机启动脚本 linux 开机启动脚本 用户自定义开机程序(/etc/rc.d/rc.local) 操作最简单,方便.每次都自己启动PHP啊,Nginx啊 烦死了,其他方式还要弄shell啊 ...

  7. Linux开机启动详解

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  8. Linux 开机启动

    Linux开机启动(bootstrap)   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机开机是一个神秘的过程.我们只是 ...

  9. LINUX开机启动过程

    LINUX开机启动过程 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息 ...

随机推荐

  1. 多数据源动态关联报表的制作(birt为例)

    使用Jasper或BIRT等报表工具时,常会碰到一些很规的统计,用报表工具本身或SQL都难以处理,比方与主表相关的子表分布在多个数据库中,报表要展现这些数据源动态关联的结果.集算器具有结构化强计算引擎 ...

  2. Verilog利用$fdisplay命令往文件中写入数据

    最近在做的事情是,用FPGA生成一些满足特定分布的序列.因此为了验证我生成的序列是否拥有预期的性质,我需要将生成的数据提取出来并且放到MATLAB中做数据分析. 但是网上的程序很乱,表示看不懂==其实 ...

  3. python unittest不执行"if __name__ == '__main__' "问题(Pycharm)

    问题: 1.selenium导入unittest框架和HtmlReport框架后,HtmlReport不被执行. 2.IDE为Pycharm 假设代码为: from selenium import w ...

  4. 全文检索引擎Solr的配置

    描述: 在Linux环境下实现高速的全文检索 一.当前环境: CentOS (Linux) 6.3 64 bit 二.所需软件 1.Java的JDK Java jdk 1.7.0[注意:solr5.x ...

  5. linux卸载一个源码包安装的软件的流程

    完全卸载memcached的方法(CentOS) 我的大内存vps(centos系统)曾经安装过memcached,想给论坛提速,实际上不但没有明显效果,反倒耗费内存,看着碍眼,于是想卸载,于是网上各 ...

  6. 【JavaScript】BOM和DOM

    在第一篇JavaScript视频总结博客中.是对JavaScript做了一个宏观的认识.当中,不知道大家可否还记得.JavaScript的核心部分包含哪些? JavaScript的核心部分主要包含三个 ...

  7. TP的分页加查询

    1.查询显示数据库的内容 控制器里的内容 public function shouye() { $n = M("car"); $arr = $n->select(); $th ...

  8. 【原创】Hibernate自动生成(1)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...

  9. LINQ分页工具

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Co ...

  10. 【BZOJ3743】[Coci2015]Kamp 树形DP

    [BZOJ3743][Coci2015]Kamp Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举 ...