ogs*_*ogs 3 variables bash kill process
我想使用 shell 脚本来建立以太网连接。
我正在使用一个实现为的函数:
function connec()
{
ip link set eth0 up
sleep 5
udhcpc -i eth0
pid=$$
echo $pid
ps
kill -9 $pid
}
Run Code Online (Sandbox Code Playgroud)
但是,脚本返回:
743
743 root 2704 S {script.sh} /bin/bash ./script.sh connect
767 root 2200 S udhcpc -i eth0
Killed
Run Code Online (Sandbox Code Playgroud)
我在商店 767 而不是 743 中没有成功。我也尝试使用 $! 但在这种特定情况下,“echo $pid”返回 0。
$$是当前进程,这意味着脚本正在杀死自己。您可以获取在后台启动的最后一个进程的进程 ID,$!但看起来您实际上并未启动其中一个进程。
使用您的代码段:
udhcpc -i eth0
pid=$$
Run Code Online (Sandbox Code Playgroud)
该pid=行只会在udhcpc退出时执行(或守护进程本身,在这种情况下既$$不会也$!不会工作),因此尝试终止进程是零点。
要在后台运行它并存储它的进程 ID,以便您可以继续在父进程中运行,您可以使用以下内容:
udhcpc -f -i eth0 &
pid=$!
Run Code Online (Sandbox Code Playgroud)
-f在这种情况下,您使用在前台运行,因为您正在接管正常的作业控制。
或者,由于udhcpc可以创建自己的PID 文件,您可以使用以下内容:
udhcpc -i eth0 -p /tmp/udhcpc.eth0.pid
pid=$(cat /tmp/udhcpc.eth0.pid)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10141 次 |
| 最近记录: |