명령 PID를 가져와 다른 [중복]으로 보냅니다.

명령 PID를 가져와 다른 [중복]으로 보냅니다.

터미널에서 명령을 실행하고 명령이 시작되자마자 해당 PID를 다른 명령으로 보내 모니터링할 수 있는지 궁금합니다.

이런 것도 해야 하는데,

dd if=/path/of/file of=/path/of/destination

그런 다음 를 사용하여 실행을 모니터링해야 pidstat하지만 pidstatpid가 필요하고 한 쪽에서 다른 쪽에게 pid를 보내는 방법을 모르겠습니다.

디스크 사용량, 메모리 사용량, CPU 사용량 및 경과 시간을 모니터링해야 합니다. 누구든지 이 작업을 수행하는 방법을 알고 있습니까?

답변1

Bash(및 아마도 다른 쉘)에서는 쉘 변수를 사용하여 마지막 백그라운드 프로세스의 PID를 프로그래밍 방식으로 캡처할 수 있습니다 $!. 즉, 다음과 같은 작업을 수행하는 것이 가능해야 합니다.

dd if=/path/of/file of=/path/of/destination & pidstat -p $!

바라보다이 비슷한 askubuntu 질문

답변2

명령 끝에 &를 추가하면 됩니다.

dd if=/path/of/file of=/path/of/destination &

위 명령을 실행하면 pid가 제공되며 이 pid를 사용하여 모니터링할 수 있습니다.

시험

cat infinite.sh
#!/bin/bash
while :
do
        echo "Press [CTRL+C] to stop.."
        sleep 1
done

이제 첫 번째 터미널에서 아래와 같이 위의 명령을 실행합니다.

-bash-3.2$ ./s.sh &
[1] 25666
-bash-3.2$ Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..

이제 두 번째 터미널을 열고 이를 사용하여 kill -9 25666프로세스를 중지할 수 있습니다. 귀하의 경우 두 번째 터미널을 열어 첫 번째 터미널에서 얻은 명령을 dd사용하여 명령을 모니터링할 수 있습니다.pid

관련 정보