linux查看服务的装态

我想查看由systemctl守护的进程服务的运行状态;

systemctl status 服务名(不一定是进程的名字)

查询步骤,要先知道server的名称:

 systemctl list-units --type=service --all

然后查询具体server(如果你知道server名称,可以直接查询)

 top 查看的是进程名,不一定是服务名称

virt虚拟内存,res 物理内存,shr 共享内存,swap交换分区(存储碎片,再利用)

 systemctl控制进程需要配置服务脚本:

/etc/systemd/system

每一个服务以.service结尾,一般会分为3部分:[Unit][Service][Install]

  • [Unit]:记录unit文件的通用信息。

  • [Service]:记录Service的信息

  • [Install]:安装信息。

[Unit]
Description=XXX service #服务的简单描述  systemctl status 查询的服务名称
#Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
#Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
#Wants:与当前 Unit 需要的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败
#BindsTo与当前 Unit 绑定的其他 Unit,如果它们退出,会导致当前 Unit 停止运行
#Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
#After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动
#Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Wants=network.target network-online.target #与当前 Unit 需要的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败 [Service]
#标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,
#把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。
#(以 fork 方式从父进程创建子进程,创建后父进程会立即退出) Type=forking LD_LIBRARY_PATH=/usr/local/WWW/zlm/ WorkingDirectory=/usr/local/WWW/zlm/
#启动当前服务的命令 ExecStart=/bin/bash -c "/usr/local/WWW/zlm/MediaServer -d -s /data/ZLmediakit.pem &"
#重启当前服务时执行的命令 ExecReload=/bin/kill -s HUP $MAINPID
#停止当前服务时执行的命令 ExecStop=/bin/killall -2 MediaServer #进程名称

KillMode=process
#定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、
#on-success、on-failure、on-abnormal、on-abort、on-watchdog
#no(默认值):退出后不会重启;
#always:不管是什么退出原因,总是重启;
#on-success:只有正常退出时(退出状态码为0),才会重启;
#on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启;
#on-abnormal:只有被信号终止和超时,才会重启;
#on-abort:只有在收到没有捕捉到的信号终止时,才会重启;
#on-watchdog:超时退出,才会重启,如ssh服务设置为on-failure,表示任何意外的失败,就将重启sshd。如果sshd正常停止(比如执行systemctl stop命令),它就不会重启。
Restart=on-failure
#定义 Systemd 停止当前服务之前等待的秒数 TimeoutSec=3min #自动重启服务需要间隔的时间(单位: 秒) RestartSec=5s StandardOutput=file:/root/qddns/output.log # 定义日志文件路径 StandardError=journal #控制台 [Install] WantedBy=multi-user.target

 

posted on 2025-02-10 10:46  邗影  阅读(30)  评论(0)    收藏  举报

导航