linux 的sh脚本中的-p、2>&1 &、$!、[]、-f、grep、awk、-z 相关的操作
发布日期:2025-04-06 22:45:18 浏览次数:6 分类:精选文章

本文共 1194 字,大约阅读时间需要 3 分钟。

#!/bin/bash  这一行脚本的作用是指定要使用的shell解释器。在 shell 脚本中,这行叫做“shebang”或“hashbang”。它告诉操作系统在运行脚本时使用哪种解释器执行该脚本,这里使用的是 /bin/bash,通常是默认的 Bourne Again Shell 解释器路径。
LOG_DIR="./logs" mkdir -p $LOG_DIR  这行代码用来创建一个名为 LOG_DIR 的变量,其值为 ./logs,然后通过 mkdir -p 创建这个目录(如果文件不存在则创建,否则保持不变)。这一写法在脚本中很常见,用于方便后续操作对目录的引用。
celery -A aaa worker -l info > $CELERY_WORKER_LOG 2>&1 &  这行代码使用 celery 命令启动一个 worker 实例,任务名称为 aaa,日志级别为 info,并将输出和错误信息重定向到指定的日志文件 $CELERY_WORKER_LOG,同时使用 & 标记将脚本后台运行,避免占用终端。
PID_DIR="./pids" if [ -f $PID_DIR/runserver.pid ]; then kill $(cat $PID_DIR/runserver.pid) rm $PID_DIR/runserver.pid fi  通过检查 runserver.pid 文件是否存在,脚本会终止运行中的 runserver 服务进程,然后删除该 PID 文件。这里的 kill 命令需要传入进程 ID,其通过 cat 命令读取文件内容获取进程 ID,并拼接传递给 kill。
ps aux | grep 'celery' | grep -v grep | awk '{print $2}' | xargs kill -9  这行代码用于查找并终止名为 celery 的所有后台进程。通过 ps aux 查看所有进程,结合 grep 'celery' filters out 包含 celery 的进程(包括子进程),再通过 grep -v grep 忽略 grep 本身的进程,然后 awk '{print $2}' 提取进程号,最后 xargs kill -9 强制终止这些进程。
remaining=$(ps aux | grep 'celery' | grep -v grep)if [ -z "$remaining" ]; then echo "All Celery workers have been successfully killed."  这代码首先通过同样的方式查询是否存在 celery 进程。如果没有(-z 为空),则显示 All Celery workers have been successfully killed.。
上一篇:linux 的vi vim 的常用的基本命令
下一篇:Linux 的NFS服务的配置

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月12日 15时41分26秒