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.

 

posted @ 2022-02-23 19:18  dsfsadfdgd  阅读(45)  评论(0)    收藏  举报