很多时候,可以看到命令
ps -ef|grep gogs | grep -v grep | wc -l
其中的grep -v grep 是干啥的呢 ?
很简单 ,为了去除包含grep的进程行 ,避免影响最终数据的正确性 。
ps -aux == ps -ef 只是
显示风格不同
因为会把刚刚执行的这个也查找出来 所以剔除它就是
追加wc -l 是记录数量 一共3个
另外一个工具
方式1
方式2
while循环语句 while-do-done_blue$boy的博客-CSDN博客
代码
while true
do
hci_ps=$(pgrep -f btattach)
if [ -z "$hci_ps" ]
then
echo "No bttach process"
else
echo "Bttach process active, kill it"
kill $hci_ps
fi
#btattach -N -B /dev/ttyAMA1 -S 921600 &
sleep 1 # delay 1 sec for attach hci device
procnum=`ps -ef| grep rpi_gw |grep -v grep |wc -l`
if [ $procnum -eq 0 ]; then
cd /home/pi/m_izar_rpi_gw
echo 53029625 | sudo echo 6 > /sys/kernel/debug/bluetooth/hci1/conn_min_interval
echo 53029625 | sudo echo 7 > /sys/kernel/debug/bluetooth/hci1/conn_max_interval
./rpi_gw hci1 -b64
echo "Reboot RPI GW"
echo 53029625 | sudo -S service bluetooth restart
fi
sleep 3
done
注意 系统只有hci0 没有hci1 上诉有问题
写一个脚本 开机启动 一旦发现main.go程序运行 就杀死它
1--怎么开机启动 守护进程
守护(Daemon)进程
2--怎么死循环
3--怎么找到进程ID
直接拿到进程号
Daemon.bash
while true
do
ps=$(pgrep -f main)
if [ -z "$ps" ]
then
echo "No main process"
else
echo "main process active, kill it"
kill $ps
fi
sleep 3
done
百度 shell if条件判断中的-z到-d的意思
package main
import (
"fmt"
"time"
)
func main() {
for {
time.Sleep(time.Second)
fmt.Println("HELLO")
}
}
go build main。g
。/main