簡體   English   中英

檢查 Bash 中是否存在 PID

[英]Check if PID exists in Bash

我想暫停 BASH 腳本的執行,直到進程關閉(我將 PID 存儲在變量中)。 我在想

while [PID IS RUNNING]; do
sleep 500
done

我見過的大多數示例都使用 /dev/null ,這似乎需要 root。 有沒有辦法在不需要root的情況下做到這一點?

非常感謝您提前!

如果$pid正在運行, kill -s 0 $pid將返回成功,否則返回失敗,而不實際向進程發送信號,因此您可以直接在if語句中使用它。

wait $pid將等待該過程,替換您的整個循環。

好像你想要

wait $pid

這將在$pid完成時返回。

否則你可以使用

ps -p $pid

檢查進程是否還活着(這比kill -0 $pid更有效,因為即使您不擁有 pid 它也能工作)。

您可能會尋找/proc/YOUR_PID目錄的存在。

ps --pid $pid &>/dev/null

如果存在則返回 0,否則返回 1

我總是使用以下tail -f /dev/null --pid $PID 它不需要顯式循環,並且不僅限於您的 shell 的子 pid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM