shell编程
1.
$0 脚本名称
$$ 当前脚本进程
2.
kill -0 pid 用来检查一个进程是否存在,存在返回0;不存在返回1
3.
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
4. 后台启动
./test.sh & 终端关闭,进程结束。 nohup ./test.sh & 退出shell终端不会中断脚本
5. shell操作数据库
#删除此时间之前的数据库或表
DB_CONNECTOR="-h 10.10.10.10 -P 3306 -u user -p123123"
DB_CMD="mysql $DB_CONNECTOR"
FILENAME=database.txt
cat $FILENAME | while read basename
do
$DB_CMD -e "use ${basename};show tables;" >> rt_check_table.txt
flag=0;
cat rt_check_table.txt | while read tablename
do
if [ $flag -ne 0 ];then
echo "DROP TABLE IF EXISTS ${basename}.${tablename};SELECT sleep(2);" >> rt_check_delete.sql
fi
let flag++
#$DB_CMD-e "$sql" | tail -n +2 > "result.txt" #表示取第二行以后的结果
done
rm -rf rt_check_table.txt
done
6. 常用命令
tail -n +2 file.log #第二行(包含)以后的数据。
read user_id state < $FILE_TEMP #读取FILE_TEMP文件中的2列数据,分别赋值给两个变量。
pid=`ps -ef | grep supervise.payserverquery | grep -v grep | awk '{print $2}'` #获取进程中的pid
killall -SIGHUP 3009 重新载入配置,重启而不是杀死进程
7. shell数组
list=("xiaoming" "qiang" "wei")
people=${list[1]} #qiang
8. while循环实现守护进程功能
app_name=$1 #app_name启动文件路径
while [ 1 ]; do
app_base_name=`basename $app_name` #去掉前面路径后的进程名
pid=`/bin/ps --noheaders -o pid -C $app_base_name`
if [ "$pid" == "" ]; then #如果进程为空,启动后台启动进程
/usr/bin/nohup $app_name &>/dev/null &
wait $child_pid #阻塞
fi
sleep 1
done
9.

浙公网安备 33010602011771号