摘要:以往的服务通常使用supervisord或者crontab的方式来守护或者定时执行,最近遇到了自己写的服务所依赖到一些组件服务,在开机的没有自动启动的问题,所以这次对添加linux开机自启动的一些方式做一个总结。让自己的服务可以做到无人托管开机自启动,减少运营成本的同时可以防止有人偷偷写入开机启动项,启动一些没有必要的服务。
/etc/rc.local
这个文件也没写过你说的/etc/rc.d/rc.local
文件啊。这是因为/etc/rc.local
软链接到/etc/rc.d/rc.local
,所以写到哪个文件里都是一样的&
符号了/etc/profile
。(只有Login shell
启动时才会运行 /etc/profile
这个脚本,也就是需要输入账号和密码的时候,而Non-login shell
不会调用这个脚本)/etc/profile
中使用一个for循环语句来调用这些脚本。而这些脚本文件是用来设置一些变量和运行一些初始化过程的。/etc/rc.d/init.d
目录为什么要介绍/etc/rc.local/init.d
目录是因为要使用chkconfig来管理自动启动的脚本,首先将启动文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下才可以
[root@VM_0_15_centos init.d]# ls
abrt-ccpp atd cloud-config crond iptables lvm2-lvmetad netconsole ntpd psacct restorecond single
abrtd auditd cloud-final functions irqbalance lvm2-monitor netfs ntpdate quota_nld rsyslog sshd
abrt-oops blk-availability cloud-init halt kdump mdmonitor network postfix rdisc sandbox udev-post
acpid bootlocal cloud-init-local ip6tables killall messagebus nfs-rdma pptpd rdma saslauthd YDService
[root@VM_0_15_centos init.d]# cp pptpd pptpd2
[root@VM_0_15_centos init.d]# service pptpd2 status
pptpd (pid 1324) is running...
[root@VM_0_15_centos init.d]# /etc/rc.d/init.d/pptpd2 status
pptpd (pid 1324) is running...
start、stop、reload、restart、force-reload
大多数的情况下,你会使用到start,stop,restart
选项/etc/init.d
指向/etc/rc.d/init.d
目录增加服务的步骤:
chkconfig --add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;chkconfig --level 35 mysqld on
修改服务的默认启动等级。[root@VM_0_15_centos init.d]# vim pptpd
#!/bin/sh
#
# Startup script for pptpd
#
# chkconfig: - 85 15
# description: PPTP server
# processname: pptpd
# config: /etc/pptpd.conf
#!/bin/sh 告诉系统使用的shell,所以的shell脚本都是这样
#chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必须
#description: http server(自己随便发挥)此行代码必须
chkconfig --add 脚本文件名 操作后就已经添加了
使用范例:
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
代表是何等级时可以在开机时自动运行此服务
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有联网NFS)
运行级别3:完全的多用户状态(有联网NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
chkconfig servicename on
Linux ntsysv命令用于设置系统的各种服务。
这是Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。
这种方式不算通用,所以我这里就不赘述了,有兴趣可以移步Linux ntsysv:设置系统服务
开机启动项
/etc/rc.d/rc.local
/etc/rc.d/init.d
下,再使用chkconfig servername on
命令添加2345运行级别到开机启动项(脚本写的规则见详情)使用密码登陆时运行
/etc/profile.d/
下原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。