说明: 大部分 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