월간 대역폭이 제한되어 있기 때문에 밤새 Android 피드를 "재동기화"해야 합니다.
, 자정에 "repo sync"를 시작한 다음 오전 8시에 종료하고 싶습니다. 명령은 다음과 같습니다.
2 0 * * * /home/user/android-src/reposync.sh
reposync.sh에는 다음이 포함됩니다.
cd /home/user/android-src
/home/user/bin/repo sync
다음 cron 항목으로 종료하고 싶습니다.
55 7 * * * ps -eo pid,args | grep repo | awk '{print $1}' | xargs -I {} kill {}
0 8 * * * ps -eo pid,args | grep repo | awk '{print $1}' | xargs -I {} kill -9 {}
문제는 "reposync"가 많은 프로세스를 생성한다는 것입니다. 많은 "git", "curl", "git-remote-http", "python"(repo 명령을 동기화하기 때문에 "bash" 및 "sh"라고 생각합니다) .sh 스크립트로). (내 무지/용어에 대해 사과드립니다.)
그들을 죽이는 프로세스를 어떻게 찾을 수 있습니까? 아니면 더 좋은 방법이 있나요? 저장소가 일반 사용자로 실행됩니까? 이 사용자에 대한 모든 작업을 종료할 수 있습니까? 며칠 동안 컴퓨터를 무인 상태로 두고 매일 밤 연결하고 매일 아침 연결을 끊고 싶습니다. 예를 들어 인터넷 연결을 종료하여 리포지토리를 복구해야 하는 등의 문제를 포함하여 모든 솔루션을 감사히 고려할 것입니다. 시간 초과로 인해? 서버에서 다른 어떤 것도 실행되고 있지 않습니다(Win7 x64의 VirtualBox, Ubuntu 10.04 실행). 그러면 오전 8시마다 재부팅해야 합니까?
답변1
kill
전체 프로세스 그룹을 종료 하려면 음수 인수를 사용하십시오 .
#!/bin/sh
ps -eo pid,args |
awk '/[r]epo/{print $1}' |
xargs -I {} kill "$@" -{}
또한 피하는 방법에 대한 오래된 FAQ를 참고하세요.쓸모 없는 grep | grep -v grep | awk
.
이것을 이렇게 부르세요
55 7 * * * /path/to/killsync
0 8 * * * /path/to/killsync -9
두 번째 것이 실제로 필요하지 않기를 바랍니다.쓸모 없는또한.
바라보다https://stackoverflow.com/questions/11000538/linux-kill-with-negative-pid
답변2
종료해야 하는 프로세스가 종료되어야 하는 하위 프로세스를 생성했습니다.
vi killemall.sh
---------------
#!/bin/bash
#
# Get the process PID
# Kill all the processes that have a parent pid = PID
# Kill the master process
#
MASTERPID=`ps -eo pid,args | grep repo | awk '{print $1}'`
ps -ef | grep ${MASTERPID} | awk '{print $1}'` | while read PIDX; do kill -9 ${PIDX} 2>/dev/null; done;
저장소가 일반 사용자로 실행됩니까? 이 사용자에 대한 모든 작업을 종료할 수 있습니까?
# Should work, but it's a complete overkill
인터넷 연결을 끊고 저장소 시간이 초과되도록 한 다음 다시 시작해야 합니까? 그럼 오전 8시마다 재부팅해야 하나요?
# No need to come up with "excentric" solutions. Follow the Kill-Em-ALL approach, and that should solve your issue.