当前位置 : 李杰的流水账 > 技术 > linux

Linux系统下systemctl常用命令以及service文件配置

linux服务管理的两种方式为service和systemctl。systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能并发启动更多进程。systemd对应的进程管理命令是systemctl。 systemctl命令用法 1. 列出所用可用单元 systemctl list-unit-files 2. 列出所有运行中的单元 systemctl list-units 3. 检查某个单元(如 crond.service)是否启用 systemctl is-enabled crond.service 4. 列出所有服务 systemctl list-unit-files ?Ctype=service 5. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态 systemctl start httpd.service systemctl restart httpd.service systemctl stop httpd.service systemctl reload httpd.service systemctl status httpd.service 6. 如何激活服务并在开机时启用或禁用服务(即系统启动时自动启动mysql.service服务) systemctl is-active mysql.service systemctl enable mysql.service systemctl disable mysql.service 7. 如何屏蔽(让它不能启动)或显示服务(如ntpdate.service) systemctl mask ntpdate.service ln -s '/dev/null' '/etc/systemd/system/ntpdate.service' systemctl unmask ntpdate.service rm '/etc/systemd/system/ntpdate.service' 8. 使用systemctl命令杀死服务 systemctl kill crond 编写一个服务 1. 添加服务文件 在/lib/systemd/system/文件目录下添加.service服务文件; 2. 编写.service文件 [Unit] Description=test for service ConditionFileIsExecutable=/etc/init.d/tst.sh After=weston.service [Service] Type=forking ExecStart=-/etc/init.d/tst.sh start ExecStop=-/etc/init.d/tst.sh stop [Install] WantedBy=multi-user.target 从上面可以看出.serive文件包括三个部分:[Unit]、[Service]、[Install]。 “ [Unit] Description:对当前服务的简单描述。 After:指定.serive在哪些服务之后进行启动; Before:指定.serive在哪些服务之前进行启动; 除上述内容,文件中还可能出现以下内容: Requires:指定服务依赖于哪些服务(强依赖关系,一旦所依赖服务异常,当前服务也随之停止); Wants:指定服务依赖于哪些服务(弱依赖关系,所依赖服务异常不影响当前服务正常运行)。 “ [Service] Type:定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle。 simple:ExecStart 字段启动的进程为该服务的主进程; forking:ExecStart 字段的命令将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程; ExecStart:定义启动进程时执行的命令; ExecStop:停止服务时执行的命令; 除上述内容外,文件中还可能出现: EnvironmentFile:环境配置文件,用来指定当前服务启动的环境变量; ExecReload:重启服务时执行的命令; ExecStartPre:启动服务之前执行的命令; ExecStartPost:启动服务之后执行的命令; ExecStopPost:停止服务之后执行的命令; RemainAfterExit:设为yes,表示进程退出以后,服务仍然保持执行; RestartSec:重启服务之前需要等待的秒数。 KillMode:定义 Systemd 如何停止服务,可以设置的值如下: control-group(默认值):当前控制组里面的所有子进程,都会被杀掉; process:只杀主进程; mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号; none:没有进程会被杀掉。 Restart:定义了退出后,Systemd 的重启方式。 可以设置的值如下: no(默认值):退出后不会重启; on-success:当进程正常退出时(退出状态码为0),才会重启; on-failure:当进程非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启; on-abnormal:当被信号终止和超时,才会重启; on-abort:当收到没有捕捉到的信号终止时,才会重启; on-watchdog:看门狗超时退出,才会重启; always:总是重启。 “ [Install] Install一般填为WantedBy=multi-user.target,表示多用户环境下服务被启用。 3. 设置开机自启动 systemctl enable (服务名) 4. 查询服务状态 systemctl status (服务名)

内容列表