したがって、サーバーがあり、sudoにアクセスして1つの操作しか実行できません。つまり、ホワイトリストスクリプトを実行します(これをターゲットスクリプトと呼びます)。 sudoや他のものへのアクセス権はありません。問題は、このスクリプトがランダムに停止され、誰かが引き続き再起動する必要があることです。これは迷惑なことです。私はこれを自動化するために以下のスクリプト(ベビースクリプトと呼びます)を作成しました。つまり、スクリプトの2つの並列インスタンスを同時に実行して停止すると、最大5回再起動します。
今は、ターゲットスクリプトを停止する方法が見つからないことを除いて、すべて大丈夫です。端末で直接実行する場合は、Ctrl+C を押して終了できます。しかし、今私はベビースクリプトによって開始され、それを終了する方法がわかりません。たとえば、実行後5秒後にターゲットスクリプトの両方のインスタンスを終了する次のスクリプトの一番下に何かを入れたいとします。
kill
さまざまなコマンドを試しましたが、pkill
sudoを実行せずにsudokill
プロセスを終了する方法はないようですpkill
。回避策として手動でCtrl + Cを押すことができるようにターゲットスクリプトをフォアグラウンド化するさまざまな方法を試しましたが、fg
bashスクリプトで開始されたプロセスをフォアグラウンド化する方法が見つからないようです。
ベビースクリプトは変更できますが、ターゲットスクリプトは変更できません。ターゲットスクリプトを殺す方法はありますか?
ベモスクリプト:
echo "ENTER YOUR PASSWORD:"
read -s PASSWORD
COUNTOUTER=1
while [ $COUNTOUTER -le 2 ]; #Create 2 parallel processes
do
(
COUNTINNER=1
while [ $COUNTINNER -le 5 ]; #Restart the target script up to 5 times
do
echo $PASSWORD | exec sudo -S ./test.sh > process1.log &
wait $!
((COUNTINNER++))
done
)&
((COUNTOUTER++))
done
sleep 5
# I want to do something here to kill the target processes