shell编程

1.

$0  脚本名称

$$ 当前脚本进程

2.

kill -0 pid 用来检查一个进程是否存在,存在返回0;不存在返回1

3.

-eq 等于
-ne 不等于
-gt 大于

-lt 小于
-ge 大于等于
-le 小于等于

4. 后台启动

1
2
./test.sh &    终端关闭,进程结束。
nohup ./test.sh &    退出shell终端不会中断脚本

 5. shell操作数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#删除此时间之前的数据库或表
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++<br>#$DB_CMD-e "$sql" | tail -n +2 > "result.txt"  #表示取第二行以后的结果
done
rm -rf rt_check_table.txt
done

 6.  常用命令

1
tail -n +2 file.log   #第二行(包含)以后的数据。<strong>read</strong> user_id state < $FILE_TEMP   #读取FILE_TEMP文件中的2列数据,分别赋值给两个变量。<br><br>pid=`ps -ef | grep supervise.payserverquery | grep -v grep | awk '{print $2}'`  #获取进程中的pid<br><br>killall -SIGHUP 3009 重新载入配置,重启而不是杀死进程

 7. shell数组

1
2
list=("xiaoming" "qiang" "wei")   
people=${list[1]}       #qiang

 8. while循环实现守护进程功能

1
2
3
4
5
6
7
8
9
10
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 @   dsfsadfdgd  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示