多くのプロセスが作成された場合、crontabを使用して「reposync」をどのように終了しますか?

多くのプロセスが作成された場合、crontabを使用して「reposync」をどのように終了しますか?

毎月の帯域幅が制限されているため、一晩中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

2番目のことは本当に必要ではないことを願っています。役に立たないまた。

バラよりhttps://stackoverflow.com/questions/11000538/linux-kill-with-negative-pid

おすすめ記事