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

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

#!/bin/sh

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx # Include nginx defaults if available
if [ -f /etc/default/nginx ]; then
. /etc/default/nginx
fi test -x $DAEMON || exit 0 set -e . /lib/lsb/init-functions test_nginx_config() {
if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
return 0
else
$DAEMON -t $DAEMON_OPTS
return $?
fi
} case "$1" in
start)
echo -n "Starting $DESC: "
test_nginx_config
# Check if the ULIMIT is set in /etc/default/nginx
if [ -n "$ULIMIT" ]; then
# Set the ulimits
ulimit $ULIMIT
fi
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;; stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;; restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON || true
sleep 1
test_nginx_config
start-stop-daemon --start --quiet --pidfile \
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;; reload)
echo -n "Reloading $DESC configuration: "
test_nginx_config
start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;; configtest|testconfig)
echo -n "Testing $DESC configuration: "
if test_nginx_config; then
echo "$NAME."
else
exit $?
fi
;; status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
*)
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
exit 1
;;
esac 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文件夹里面的文件

root@Test1:/tmp/nginx# ls -l /etc/rc3.d/
total 4
-rw-r--r-- 1 root root 677 Jul 27 2012 README
lrwxrwxrwx 1 root root 17 Sep 23 2016 S10vboxadd -> ../init.d/vboxadd
lrwxrwxrwx 1 root root 27 Sep 23 2016 S20nfs-kernel-server -> ../init.d/nfs-kernel-server
lrwxrwxrwx 1 root root 21 Sep 23 2016 S30vboxadd-x11 -> ../init.d/vboxadd-x11
lrwxrwxrwx 1 root root 25 Sep 23 2016 S35vboxadd-service -> ../init.d/vboxadd-service
lrwxrwxrwx 1 root root 15 Sep 23 2016 S50rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root 19 Sep 23 2016 S70dns-clean -> ../init.d/dns-clean
lrwxrwxrwx 1 root root 18 Sep 23 2016 S70pppd-dns -> ../init.d/pppd-dns
lrwxrwxrwx 1 root root 14 Sep 23 2016 S75sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root 21 Sep 23 2016 S99grub-common -> ../init.d/grub-common
lrwxrwxrwx 1 root root 18 Sep 23 2016 S99ondemand -> ../init.d/ondemand
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规则

sh /home/ivan/iptables.sh
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. 源代码分析:onAttach, onMeasure, onLayout, onDraw 的顺序。

    从前文<源代码解析:dialog, popupwindow, 和activity 的第一个view是怎么来的?>中知道了activity第一个view或者说根view或者说mDecorVi ...

  2. 基于vue + axios + lrz.js 微信端图片压缩上传

    业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...

  3. 小技巧之Selenium如何切换到弹出的Tab页中

    今天群里讨论了一个问题,如何将selenium的操作焦点切换到浏览器中新弹出来的Tab页中,正好对应到了昨天的那篇文章“小技巧之在浏览器中打开新的页签”.今天就带大家来解决这个问题: 先封装一个Tab ...

  4. 【问题记录】web项目访问时出现404

    请一定检查一下项目的Context root是否是你访问时使用的. Context root设置为/时,可以直接用ip+端口访问. Context root设置为项目名的,访问时请带上项目名. 设置方 ...

  5. oracle中sqlldr工具使用时注意事项

    1.命令写在一行:如,sqlldr sh/&sh_pass@&connect_string control=&ctl_file data=&dat_file log=& ...

  6. iOS 渐变色实现,渐变色圆环,圆环进度条

    CAGradientLayer图层可以通过设置mask来给视图添加渐变效果 CAGradientLayer主要需要设置一下几个参数 colors:传入需要渐变的颜色 例如 self.gradientL ...

  7. laravel学习之路1:认证相关

    Laravel中Auth::guard()表示什么意思? Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题. 但是使用两组用户的话,如何使用各组用户的功能 ...

  8. RecyclerView 踩坑

    一.RecyclerView设置拖动后怎么监听拖动的开始和结束 ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Cal ...

  9. [root@localhost ~]#各项解释

    [root@localhost ~]# 解释: [登录用户@主机名 索引目录(~家目录,当前所在的目录)]#号代表超级用户,$普通用户

  10. window下python安装pip

    python3.5 1.cmd下运行python -m pip install -U pip   2.Path添加python安装目录下的\Scripts,有pip.exe文件   3.重新打开cmd ...