Skip to content

常用Linux命令

配置systemctl

简单配置

bash
# 创建服务文件
cat <<EOF >/usr/lib/systemd/system/node_exporter.service

[Unit]
Description=https://prometheus.io

[Service]
Restart=always
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target
EOF
加载启动文件并启动
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter

另一种配置

sql
cat <<EOF >/usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch

[Service]
Type=simple
User=elk
ExecStart=/home/elk/elasticsearch-8.4.3/bin/elasticsearch
KillMode=control-group
Restart=on-failure
LimitNOFILE=65535
LimitMEMLOCK=infinity

[Install]
WantedBy=multi-user.target
EOF

其中User为执行命令的非root用户,ExecStart的启动命令,其内部的文件路径只能是绝对路径 而LimitNOFILE文件句柄数限制,LimitMEMLOCK锁住内存,不可省略

配置详解

bash
- Unit
   - Description,服务的描述
   - Documentation,文档介绍
   - After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动
- Install
   - WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中
   - RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中
   - Alias,当前Unit可用于启动的别名
   - Also,当前Unit激活(enable)时,会被同时激活的其他Unit
- Service
   - Type,定义启动时的进程行为。它有以下几种值。
   	- Type=simple,默认值,执行ExecStart指定的命令,启动主进程
   	- Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出
   	- Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行
   	- Type=dbus,当前服务通过D-Bus启动
   	- Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行
   	- Type=idle,若有其他任务执行完毕,当前服务才会运行
   - ExecStart,启动当前服务的命令
   - ExecStartPre,启动当前服务之前执行的命令
   - ExecStartPost,启动当前服务之后执行的命令
   - ExecReload,重启当前服务时执行的命令
   - ExecStop,停止当前服务时执行的命令
   - ExecStopPost,停止当其服务之后执行的命令
   - RestartSec,自动重启当前服务间隔的秒数
   - Restart,定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
   - TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数
   - Environment,指定环境变量