0


Linux 添加开机启动方法(服务/脚本)

#引用作者:刘_love_田 的文章#

O、系统启动时需要加载的配置文件

/etc/profile、/root/.bash_profile
/etc/bashrc、/root/.bashrc
/etc/profile.d/*.sh、/etc/profile.d/lang.sh
/etc/sysconfig/i18n、/etc/rc.local(/etc/rc.d/rc.local)

一、修改开机启动文件:/etc/rc.local(或者/etc/rc.d/rc.local)

  1. # 1.编辑rc.local文件
  2. [root@localhost ~]# vi /etc/rc.local
  3. # 2.修改rc.local文件,在 exit 0 前面加入以下命令。保存并退出。
  4. /etc/init.d/mysqld start # mysql开机启动
  5. /etc/init.d/nginx start # nginx开机启动
  6. supervisord -c /etc/supervisor/supervisord.conf # supervisord开机启动
  7. /bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null
  8. # 3.最后修改rc.local文件的执行权限
  9. [root@localhost ~]# chmod +x /etc/rc.local
  10. [root@localhost ~]# chmod 755 /etc/rc.local

二、自己写一个shell脚本

将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。

三、通过chkconfig命令设置

  1. # 1.将(脚本)启动文件移动到 /etc/init.d/或者/etc/rc.d/init.d/目录下。(前者是后者的软连接)
  2. mv /www/wwwroot/test.sh /etc/rc.d/init.d
  3. # 2.启动文件前面务必添加如下三行代码,否侧会提示chkconfig不支持。
  4. #!/bin/sh 告诉系统使用的shell,所以的shell脚本都是这样
  5. #chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必须
  6. #description: http server 自己随便发挥!!!,此行代码必须
  7. /bin/echo $(/bin/date +%F_%T) >> /tmp/test.log
  8. # 3.增加脚本的可执行权限
  9. chmod +x /etc/rc.d/init.d/test.sh
  10. # 4.添加脚本到开机自动启动项目中。添加到chkconfig,开机自启动。
  11. [root@localhost ~]# cd /etc/rc.d/init.d
  12. [root@localhost ~]# chkconfig --add test.sh
  13. [root@localhost ~]# chkconfig test.sh on
  14. # 5.关闭开机启动
  15. [root@localhost ~]# chkconfig test.sh off
  16. # 6.从chkconfig管理中删除test.sh
  17. [root@localhost ~]# chkconfig --del test.sh
  18. # 7.查看chkconfig管理
  19. [root@localhost ~]# chkconfig --list test.sh

四、自定义服务文件,添加到系统服务,通过Systemctl管理

1.写服务文件:如nginx.service、redis.service、supervisord.service
  1. [Unit]:服务的说明
  2. Description:描述服务
  3. After:描述服务类别
  4. [Service]服务运行参数的设置
  5. Type=forking 是后台运行的形式
  6. ExecStart 为服务的具体运行命令
  7. ExecReload 为服务的重启命令
  8. ExecStop 为服务的停止命令
  9. PrivateTmp=True 表示给服务分配独立的临时空间
  10. 注意:启动、重启、停止命令全部要求使用绝对路径
  11. [Install] 服务安装的相关设置,可设置为多用户
  12. WantedBy=multi-user.target
2.文件保存在目录下:以754的权限。目录路径:/usr/lib/systemd/system。如上面的supervisord.service文件放在这个目录下面。
  1. [root@localhost ~]# cat /usr/lib/systemd/system/nginx.service
  2. [root@localhost ~]# cat /usr/lib/systemd/system/supervisord.service
3.设置开机自启动(任意目录下执行)。如果执行启动命令报错,则执行:systemctl daemon-reload
  1. 设置开机自启动
  2. [root@localhost ~]# systemctl enable nginx.service
  3. [root@localhost ~]# systemctl enable supervisord
  4. 停止开机自启动
  5. [root@localhost ~]# systemctl disable nginx.service
  6. [root@localhost ~]# systemctl disable supervisord
  7. 验证一下是否为开机启动
  8. [root@localhost ~]# systemctl is-enabled nginx
  9. [root@localhost ~]# systemctl is-enabled supervisord
4.其他命令
  1. 启动nginx服务
  2. [root@localhost ~]# systemctl start nginx.service
  3. 停止nginx服务
  4. [root@localhost ~]# systemctl start nginx.service
  5. 重启nginx服务
  6. [root@localhost ~]# systemctl restart nginx.service
  7. 查看nginx服务当前状态
  8. [root@localhost ~]# systemctl status nginx.service
  9. 查看所有已启动的服务
  10. [root@localhost ~]# systemctl list-units --type=service
5.服务文件示例:
  1. # supervisord.service进程管理服务文件
  2. [Unit]
  3. Description=Process Monitoring and Control Daemon # 内容自己定义:Description=Supervisor daemon
  4. After=rc-local.service nss-user-lookup.target
  5. [Service]
  6. Type=forking
  7. ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
  8. ExecStop= /usr/bin/supervisorctl shutdown
  9. ExecReload=/usr/bin/supervisorctl reload
  10. Restart=on-failure
  11. RestartSec=42s
  12. KillMode=process
  13. [Install]
  14. WantedBy=multi-user.target
  15. # nginx.service服务文件
  16. [Unit]
  17. Description=nginx - high performance web server
  18. After=network.target remote-fs.target nss-lookup.target
  19. [Service]
  20. Type=forking
  21. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  22. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  23. ExecStop=/usr/local/nginx/sbin/nginx -s stop
  24. [Install]
  25. WantedBy=multi-user.target
  26. # redis.service服务文件
  27. [Unit]
  28. Description=Redis
  29. After=network.target remote-fs.target nss-lookup.target
  30. [Service]
  31. Type=forking
  32. ExecStart=/usr/local/bin/redis-server /etc/redis.conf
  33. ExecStop=kill -INT `cat /tmp/redis.pid`
  34. User=www
  35. Group=www
  36. [Install]
  37. WantedBy=multi-user.target
标签: linux 服务器 网络

本文转载自: https://blog.csdn.net/erhisme/article/details/136997627
版权归原作者 erhisme 所有, 如有侵权,请联系我们删除。

“Linux 添加开机启动方法(服务/脚本)”的评论:

还没有评论