Как бы я получить PID процесса, который выполняется в сценарии Bash и знать, когда это будет сделано - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно знать другой pid процесса, который выполняется в bash-скрипте как команда, такая как сканирование nmap и т. Д. Когда процесс создается, я могу отображать полосу или счетчик #!/bin/sh G='\033[0;32m' B='\033[0m' ${G}Enter IP TAIL LIKE 0.1 OR 1.1${B}" read v ${G}ENTER Device NAME ${B}" read k nmap -A -Pn -sV 192.168.$v -oN /tmp/op //here i want a while loop for displaying a spinner

код редактирования обновлен Это код в случае, если он не был виден должным образом ^^ Поскольку pid умирает, когда он завершен, я могу использовать его в качестве счетчика или флага или чего-то похожего для завершения вращения.Я работаю над Kali nethunter.

PS Это мой первый раз при переполнении стека, пожалуйста, простите меня, если это слишком глупо, или скажите мне, если я что-то пропустил.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019
nmap -A -Pn -sV 192.168.0.1 -p -oN  /tmp/op   >/dev/null & pid=$!
i=1
sp="/-\|"
echo -n ' '
while kill -0 "$pid" 2>&1 >/dev/null;
do
printf "\b${sp:i++%${#sp}:1}"
done

* Проблема решена благодаря * Камил Цук

0 голосов
/ 07 февраля 2019

Начальная точка:

#!/bin/bash

echo "Enter IP:"
read -r ip

# `&` runs in parallel
# always quote variables
nmap "$ip" &  
# `$!` get's the background process PID
pid=$!

...

# you can see if a pid is running by checking exit status of `kill -0`
while kill -0 "$pid" 2>&1 >/dev/null; do
    printf ...
    ...
done
...