linux shell如何以服务,如何将shell脚本或者其他服务设置为开机启动?

  • Post author:
  • Post category:linux


查看已启动的服务

systemctl list-units –type=service

查看是否设置开机启动

systemctl list-unit-files | grep enable

设置开机启动

systemctl enable test.service

关闭开机启动

systemctl disable test.service

sudo systemctl daemon-reload #重载服务列表

方案一:通过systemd制作service(推荐)

1、 比如吧jumpserver服务设置为开机启动:

vi /usr/lib/systemd/system/jms.service

[Unit]

Description=jms

After=network.target mariadb.service redis.service

Wants=mariadb.service redis.service

[Service]

Type=forking

Environment=”PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”

ExecStart=/opt/jumpserver/jms start all -d

ExecReload=

ExecStop=/opt/jumpserver/jms stop

[Install]

WantedBy=multi-user.target

2、把nginx设置为开机启动:

vi /usr/lib/systemd/system/nginx.service

[Unit]

Description=nginx service

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

[Install]

WantedBy=multi-user.target

sudo systemctl daemon-reload #重载服务列表

3、把其他shell脚本设置为开机启动:

vi /usr/lib/systemd/system/jms_coco.service

[Unit]

Description=jms_coco

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

ExecStart=/opt/jumpserver/jms_coco.sh

[Install]

WantedBy=multi-user.target

方案二:通过chkconfig的方式(centos6.5系统才支持)。

1、先新建一个test.sh 的脚本,给a+x权限,然后添加

#chkconfig:   2345 50 50

#description:name

2、chkconfig –add test

3、chmod +x test

4、systemctl enable test

其中2345是默认启动级别,级别有0-6共7个级别。

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

15是启动优先级,95是停止优先级,优先级范围是0-100,数字越大,优先级越低。

方案三:通过修改rc.local(centos6.5系统才支持)。

1、vi /etc/rc.local

添加

/etc/init.d/test start

2、chmod +x /etc/rc.local

chmod +x /etc/init.d/test