shell前面自己了解,这里直接写了,参考作用
注意:ubuntu 操作系统要 sudo su - ,进入root权限
创建shell文件 touch start.sh
文件创建,但没有什么权限,加入语句 chmod +x start.sh
1、查询进程的pid
#这里以mysql 为例查找
思路:我们先按照Linux,命令 保证我们指令没错 ps aux | grep mysql
这里可以看到PID在第二列!!!!位置需要记得后面有用
也有的用 ps -ef | grep mysql 这里我也不明白,但我都尝试可以
确定进程存在我们开始编写shell脚本
#!/bin/bash
#mysql的所有进程的PID
pid=$(ps aux | grep "mysql" | awk '{print $2}')
echo "mysql的所有进程的PID:"$pid
分析: ps是查看指令, grep是条件 ,awk是打印我们需要的字段PID在第二个字段 print $2 ,print $1就会是root。
我们加入限制条件查找local下的mysql
#!/bin/bash
pid=$(ps aux | grep "mysql" | awk '{print $2}')
echo "mysql的所有进程的PID:" $pid
#第二组
pid2=$(ps aux | grep 'mysql' | grep 'local' | awk '{print $2}')
echo "local下的mysql进程PID:"$pid2
#第三组
pid2=$(ps aux | grep 'mysql' | grep 'local' | awk '{print $1}')
echo "打印第一个列内柔:"$pid2
2、docker的有思路了
首先我们查看当前运行的 docker 容器,查到后我们就可以通过编写shell命令来执行
#!/bin/bash
#运行mysql
docker run -d -p 4406:3306 registry.cn-hangzhou.aliyuncs.com/zhufc/mysql:v2
docker ps
#获取到容器ID
id=$(docker ps |grep "mysql" | awk '{print $1}')
echo "容器id:"$id
获取到容器id后我们可以进行其他 操作了
例如进入容器 docker exec -it ${CONTAINER ID} bash
#!/bin/bash
#运行mysql
docker run -d -p 4406:3306 registry.cn-hangzhou.aliyuncs.com/zhufc/mysql:v2
docker ps
#获取到ID
id=$(docker ps |grep "mysql" | awk '{print $1}')
echo "容器id:"$id
#进入容器
docker exec -it $id bash
#打印当前的路径
pwd
运行结果,这里已经进入容器了,但是进入后用户切换了 pwd没执行。
这就是shell的查询id并打印的脚本。