터미널에서 명령을 실행하고 명령이 시작되자마자 해당 PID를 다른 명령으로 보내 모니터링할 수 있는지 궁금합니다.
이런 것도 해야 하는데,
dd if=/path/of/file of=/path/of/destination
그런 다음 를 사용하여 실행을 모니터링해야 pidstat
하지만 pidstat
pid가 필요하고 한 쪽에서 다른 쪽에게 pid를 보내는 방법을 모르겠습니다.
디스크 사용량, 메모리 사용량, CPU 사용량 및 경과 시간을 모니터링해야 합니다. 누구든지 이 작업을 수행하는 방법을 알고 있습니까?
답변1
Bash(및 아마도 다른 쉘)에서는 쉘 변수를 사용하여 마지막 백그라운드 프로세스의 PID를 프로그래밍 방식으로 캡처할 수 있습니다 $!
. 즉, 다음과 같은 작업을 수행하는 것이 가능해야 합니다.
dd if=/path/of/file of=/path/of/destination & pidstat -p $!
답변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