Yi fan

Linux常用命令-服务篇

服务常用命令:
systemctl list-units --type service:列出所有正在运行的服务。
systemctl list-units --type service --state=running:列出所有正在运行的服务。
systemctl status service_name:查看指定服务的状态,例如systemctl status sshd用于查看 OpenSSH 服务是否正在运行。
systemctl is-active service_name:查看指定服务是否正在运行。
systemctl is-enabled service_name:查看指定服务是否已启用。
ps aux | grep service_name:通过ps命令列出系统中所有正在运行的进程,包括服务进程,然后使用grep命令过滤出指定的服务名称进程,例如ps aux | grep sshd用于查看 OpenSSH 服务的进程信息。
chkconfig --list:列出所有服务的状态。
/etc/services:查看所有可用服务的配置信息,包括服务名称、端口号、协议等。
netstat -pnltu:查看服务及它们所监听的端口
journalctl -u service_name -n line-count 查看特定服务的日志查看特定服务的运行状态【-n line-count 是查看最后line-count行】
实例:
系统服务的路径:ls /etc/systemd/system/
实例:自定义一个系统启动自动执行的脚本,让一些docker容器开机就启动
第一步,创建一个脚本放在用户目录,如
ls /home/hans/start.sh
可以使用vim编写,不过太麻烦了,可以在windows编好后拷过去,比如放在d:\Temp\start.sh, 然后再linux的/home/yourame/ 拷贝文件过去 (sudo cp /mnt/d/Temp/start.sh /home/yourname/)内容如下
#!/bin/bash
 
if [ $# -gt 0 ]; then
echo "参数:$@"
fi
 
# 检查当前用户是否为 root
if [ "$(id -u)" != "0" ]; then
 
echo "必须以 root 用户身份运行此脚本"
exit 1
fi
 
# 执行操作
echo "检测docker服务是否启动..."
 
while [ "$(systemctl is-active docker.service)" != "active" ]; do
sleep 2;
echo "正在等待docker服务启动, 暂停2秒钟"
done
 
# 重新启动第一个 Docker 容器
docker restart mysql-xwiki
 
# 重新启动第二个 Docker 容器
docker restart xwiki
 
# 退出脚本
exit 0
第二步,编写一个服务,服务文件是 /etc/systemd/system/hans-script.service,服务名就是hans-script.service
ls /etc/systemd/system/ 可以看到这个文件
 
可以采用和start.sh同样的方法来编写内容, 内容如下:
[Unit]
Description= hans startup script service
 
[Service]
ExecStart=/home/hans/start.sh
 
[Install]
WantedBy=multi-user.target
第三步,启用并启动服务
sudo systemctl enable hans-script.service
sudo systemctl start hans-script.service
查看服务状态
sudo systemctl status hans-script.service
查看服务日志
journalctl -u hans-script.service -n 20 (新建的这个服务)
journalctl -u docker.service -n 20 (docker服务)
 
上面三步完成后重启系统,发现docker容器并没有正常启动,通过journalctl命令发现有权限问题Permission deneid,下面解决权限问题,通过豆包AI的建议,分三步来完成:
第一步,使用cd命令导航到包含启动脚本的文件夹。然后使用chmod命令将启动脚本的权限设置为 +x,这将赋予脚本的所有者读取、写入和执行权限。
sudo chmod +x start.sh
第二步,使用chown命令将启动脚本的所有者设置为 root 用户,并将组设置为 root 用户组
sudo chown root:root start.sh
第三步,使用visudo命令编辑 sudoers 文件,将启动脚本添加到允许使用 sudo 命令的用户列表中。例如,如果要允许用户名为user的用户使用 sudo 命令执行启动脚本,可以在 sudoers 文件中添加以下行:
user ALL=(ALL) NOPASSWD: /home/hans/start.sh
 
做法:在命令行直接执行sudo visudo,sudoers文件就会被打开,内容如下(最后一行黑体的是新加的,前面的部分是原来就有的,不同电脑可能不完全一样),然后按ctrl+s 保存,按ctrl+x退出。:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
 
# See sudoers(5) for more information on "@include" directives:
 
@includedir /etc/sudoers.d
user ALL=(ALL) NOPASSWD: /home/hans/start.sh
 
可以使用cat 命令查看文件内容
cat /home/hans/start.sh
cat /etc/systemd/system/hans-script.service
 

posted on 2025-02-22 02:53  hanswei  阅读(126)  评论(0)    收藏  举报

导航