답변:
흠, 그 트릭을해야합니다 :
xmessage "Hello World" &
pidsave=$!
sleep 10; kill $pidsave
xmessage
여기서 빠른 테스트 사례를 제공합니다 (귀하의 경우 airodump 명령이 있어야 함). &
배경에 넣습니다.
$!
마지막으로 시작된 프로세스의 PID를 보유합니다 (예 : /programming//a/1822042/2037712 참조 ). PID는 변수에 저장됩니다 pidsave
.
대기 ( sleep
) 후 TERM
프로세스에 신호를 보냅니다 .
some command > logfile &
하려면 첫 번째 줄에 사용하십시오. 나중에 분석 할 수 있습니다 logfile
.
bash 프롬프트에서 사용할 수 있습니다 "
your_command & sleep 20; kill $!
aptget install timeout
하고timeout -k 3m 14s your_command
expect
여기에 설명 된대로 사용 하십시오 : /unix/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
(
출처 및 설명 )또 다른 방법은 pgrep $ pattern 또는 pkill $ pattern을 사용하는 것입니다. 주어진 패턴과 일치하는 모든 PID를 반환하여 시스템에서 실행중인 모든 프로세스를 찾습니다. 따라서 PID 범위를 소유 한 PID로만 제한하려면 다음을 사용하십시오. pgrep -P $ mypid $ pattern 또는 pkill -P $ mypid $ pattern
따라서 설정된 시간 동안 백그라운드 프로세스를 실행하려면 스크립트는 다음과 같습니다.
#!/bin/bash
mypid=$$
run_something &
sleep $time_in_seconds
pkill -P $mypid something
이것은 현재 상위 PID에서 실행되는 동일한 이름 패턴을 가진 모든 프로세스를 종료시킵니다. 따라서이 프로세스를 사용하여 여러 프로세스를 시작하고 특정 시간이 지나면 동시에 프로세스를 모두 종료 할 수 있습니다.