技术解析

shell 脚本 sleep 1 秒都会卡住是什么原因
0
2021-06-24 13:59:10
idczone

ps 命令输出截图


![po5cFS.png]( https://s1.ax1x.com/2018/01/24/po5cFS.png)

你试试 kill 了它,看是不是会变成 defunc...

你说 kill 哪个进程,sleep 1 的父进程爷进程都在的

楼主的意思是 sleep 1 这个进程会长时间运行,无法结束?
单看这一张截图,没有任何异常。

是啊,sleep 1 这个进程,按理说 1 秒后就自杀了,为什么还在吗,我在 resetgpio25.sh 脚本中调用的,等它 sleep 完我还要重启应用服务,结果它这卡住了,导致我的服务都没启动

可能是当前目录 IO busy 导致的, 试试(cd /; sleep 1)

kill sleep 1 这个,14527

父进程和 sleep 的进程号差那么多,是不是死循环 sleep 了

没有啊,我复制出来前台运行可以的

这和目录有什么关系,sleep 没有调用任何当前目录的资源

把 sleep 1 注释掉试试看? @koebehshian

刚发现 sleep1 的进程 id 在变化,看来确实是死循环了,但不知道为什么死循环,代码我复制出来运行可以的,我的死循环是用 test -e 检测 /dev 目录下的设备。

! test -e /dev/ttyUSB0 是什么鬼?
!是 test 的参数啊
试试
while test ! -e /dev/ttyUSB0

是类似这样的吗?@koebehshian
/>echo "starting"
while [ ! -e /dev/ttyUSB0]; do
echo "not exsiting"
done
sleep 1
echo "finishing"
执行的 shell 是 bash 还是其他 shell?

我试过两种都行

不是,我 sleep1 会在循环里面,有两个循环,我先通过 gpio 把设备关了,然后一个死循环,等它没了;然后再开,再一个死循环等它出现。
我原来以为是后面那个死循环,其实是前面那个死循环。
语法问题就简单多了,我手动运行过没语法问题.

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服