Linux 系统可以通过命令行,有效简便快捷的启动程序、设置开机自启的程序等,并且,往往有多个命令可以达到这一效果。但是,需要我们了解这些命令并知悉它们之间的区别,下面主要简单的总结一下,本篇所有命令以 root 身份运行。

启动程序命令

/etc/init.d/appname

常用方法:

1
2
3
4
5
6
7
8
9
10
11
# 查看 ssh 服务状态
/etc/init.d/ssh status

# 启动 ssh 服务
/etc/init.d/ssh start

# 关闭 ssh 服务
/etc/init.d/ssh stop

# 重启 ssh 服务
/etc/init.d/ssh restart

/etc/init.d/ 其实是一个目录,里面存放的都是系统启动时需要运行或关闭的命令,这些命令常常通过软连接,连接到各级启动级别的文件夹中,如 /etc/rc3.d/,通过下面介绍的命令 update-rc.d 和 systemctl 可以设置开机启动或关闭。

service

常用方法:

1
2
3
4
5
6
7
8
9
10
11
# 查看防火墙状态
service ufw status

# 关闭防火墙
service ufw stop

# 启动防火墙
service ufw start

# 重启
service ufw restart

service 是一个运行 System V 的 init script,它其实是运行 /etc/init.d 和 /{lib,run,etc}/systemd/system 中的命令或程序,对于 /etc/init.d/ 就是等同于上面介绍的命令 /etc/init.d/appname.

systemctl

常用方法:

1
2
3
4
5
6
7
8
9
10
11
# 查看 zabbix-agent 运行状态
systemctl status zabbix-agent.service

# 关闭 zabbix-agent
systemctl stop zabbix-agent.service

# 启动 zabbix-agent
systemctl start zabbix-agent.service

# 重启 zabbix-agent
systemctl restart zabbix-agent.service

该命令非常强大,不仅可以启动程序,还可以设置程序开机自启等,不过在 Ubuntu 14.04等之前的系统中未有该命令。在 Centos、Redhat 等系统中,设置程序开机自启的有 chkconfig 等,不过,现在逐渐被抛弃。功能上 systemctl = service + chkconfig.

设置开机自启命令

update-rc.d

常用方法:

1
2
3
4
5
6
7
8
# 取消开机启动 zabbix-agent,从 /etc/rcN.d 中清除到 /etc/init.d/zabbix-agent 链接
update-rc.d -f zabbix-agent remove

# 设置默认启动级别的 zabbix-agent 开机自启
update-rc.d zabbix-agent defaults

# 设置 zabbix-agent 开机自启
update-rc.d zabbix-agent enable

chkconfig

常用方法:

1
2
3
4
5
# 设置开机启动z abbix-agent
chkconfig --add zabbix-agent

# 设置开机不启动 zabbix-agent
chkconfig --del zabbix-agent

在 Debian、Ubuntu 上无该命令,在 Centos、RedHat 上可以使用。

systemctl

常用方法:

1
2
3
4
5
6
7
8
9
# 开机启动ssh服务
systemctl enable ssh.socket

# 开机不启动ssh服务
systemctl disable ssh.socket

# 查看zabbix-agent是否开机启动
systemctl list-unit-files | grep zabbix-agent
systemctl is-enabled zabbix-agent