systemctl

systemctl 是管理服务用的工具。

启动服务

启动服务可以使用 start 命令,像这样:

sudo systemctl start 服务

注意启动服务需要使用管理员权限,所以如果当前登录的用户不是管理员,需要在命令前面加上 sudo 。

停止服务

停止服务用的是 stop 命令:

sudo systemctl stop 服务

服务状态

确定服务的运行状态用的是 status :

sudo systemctl status 服务

重启与重载

重启就是关闭服务再打开服务,重载是重新加载服务。一般对服务做了配置以后,可以选择重载,这样不需要重启服务,就可以让配置生效。

重启:

sudo systemctl restart 服务

重载:

sudo systemctl reload 服务

启用与禁用

让服务开机自启用可以用 enable 启用一下这个服务,这样每次重启服务器以后,这个服务会自动启动。也就是你不需要手工再用 start 命令去启动它了。禁用服务就是让服务不开机自启动。

启用:

sudo systemctl enable 服务

禁用:

sudo systemctl disable 服务

练习

安装一个 NGINX Web 服务器,然后练习一下 systemctl 相关的命令。

1,先安装一下 NGINX,使用 Yum 包管理工具,执行:

sudo yum install nginx -y

完成以后,先查看一下 NGINX 服务的状态:

sudo systemctl status nginx

返回的是:

● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: http://nginx.org/en/docs/

注意 Active 那里,显示的是 inactive(dead),这就表示这个服务当前还没有运行。

2,启动 NGINX 服务,执行:

sudo systemctl start nginx

然后再次查看 NGINX 的运行状态,这次会返回:

● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-05-22 06:06:16 UTC; 5s ago
     Docs: http://nginx.org/en/docs/
  Process: 4896 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
  Process: 4895 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 4900 (nginx)
   CGroup: /system.slice/nginx.service
           ├─4900 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─4901 nginx: worker process

May 22 06:06:16 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
May 22 06:06:16 localhost.localdomain nginx[4895]: nginx: the configuration file /etc/nginx/nginx.conf sy... ok
May 22 06:06:16 localhost.localdomain nginx[4895]: nginx: configuration file /etc/nginx/nginx.conf test i...ful
May 22 06:06:16 localhost.localdomain systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 22 06:06:16 localhost.localdomain systemd[1]: Started nginx - high performance web server.
Hint: Some lines were ellipsized, use -l to show in full.

这次 Active 就变成了 active(running),表示服务正在运行。

3,启用 NGINX 服务,让它可以开机自启动,执行:

sudo systemctl enable nginx

上面这个动作只需要做一次。执行以后会返回:

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

4,重新启动一下服务器,然后再查看 NGINX 的运行状态。没什么问题的话,它的状态应该是 active(running)。

5,查看系统进程,看一下运行 NGINX 工作进程的用户是谁。执行:

ps aux | grep nginx

返回类似的内容:

nginx     4901  0.0  0.3  46184  1888 ?        S    06:06   0:00 nginx: worker process

一开始的 nginx 就是 nginx 的 worker process 进程的用户。

6,修改 NGINX 的配置文件,重新设置运行 nginx 的用户。先编辑文件:

sudo vi /etc/nginx/nginx.conf

把:

user  nginx;

改成:

user  www-data;

保存 NGINX 的配置文件。创建一个用户:

sudo useradd www-data

然后重载一下 NGINX 服务:

sudo systemctl reload nginx

再次查看系统进程,看一下运行 nginx 的用户是谁。你会发现,这次会是 www-data 这个用户。说明重载服务以后,新做的配置已经生效了。

results matching ""

    No results matching ""