Shell脚本的一些常用用法

说明: 大部分 Shell 都是基于 CentOS 的 bash 的, 一般情况也可以用于其他的命令行系统.

常用但是永远记不住的几个

获取当前文件路径, 便于在不同路径都可以执行脚本(不至于 cd 时候出现错误)

CURR=$(cd `dirname $0`; pwd)

获取当前时间

NOW=$(date +%Y%m%d-%H%M%S)

判断上一条语句是否执行成功

if [ "$?" != "0" ]; then
    echo "something went wrong!"
    exit 1
fi

日志重定向

## 不能是 2>&1 >>/var/log/sth.log &, 这样达不到将错误输出到/var/log/sth.log的目的.
sh sth.sh >>/var/log/sth.log 2>&1 &

判断某进程是否存在

num=`ps -ef | grep XXX | grep -v grep | wc -l`
if (( ${num} -gte 1 )); then
    echo 'process exist ${num}'
    exit 1
fi

常用服务的启动/重启/关闭

Nginx

nginx -T
systemctl start|stop|restart nginx
nginx -s reload

Apache

MySQL

systemctl start|stop|restart mysqld

PHP FPM

PM2 - NodeJS

pm2 list
pm2 start app.js --name App
pm2 stop App|$id
pm2 restart App|$id
...

Supervisor

启动

supervisord -c /etc/supervisord/config.conf

关闭

kill -9 $pid
Donate - Support to make this site better.
捐助 - 支持我让我做得更好.