削除する前に、ユーザープロセスを確認して終了してください。

削除する前に、ユーザープロセスを確認して終了してください。

テキストファイルからユーザーを削除するスクリプトを作成しています。しかし、削除する前にユーザーに実行中のプロセスがあることを確認し、その場合はすべてのプロセスを終了して削除したいと思います。これが私がする方法です:

    if 
   #user doesn't exists then print user not exist
else
pids = `ps U "$name" -o pid | head -n -1` 
    if [ -n "$pids" ]
    then
    for pid in $pids
    do
        sudo kill -KILL $pid
    done
fi


     sudo userdel

 $name -r -f    
    echo     


       echo "The user - $name - has been deleted!"
    echo
    fi
    done < "$fname"                         # double-quote fname
    echo

したがって、デフォルトでは、これはユーザーに実行中のプロセスがないことを確認するifステートメントを使用してユーザーを削除するループであり、実行中のプロセスがある場合は強制的にプロセスを閉じてユーザーを削除します。

しかし、うまくいきませんpids: command not found。 ..解決策はありますか?どうすれば解決できますか?

ベストアンサー1

次のコードがあります。

pids = `ps U "$name" -o pid | head -n -1`

bash はここで空白に対して難しいです。スペースを削除すると、期待pids = ...どおりに機能します。

pids=`ps U "$name" -o pid | head -n -1`

おすすめ記事