Linuxにおいて一定時間後にシステムをシャットダウンする方法を解説します。ここでは、`shutdown`コマンドを使った基本的な方法から、`cron`や`at`コマンドを用いたスケジュール設定まで詳しく紹介します。具体的なコード例とその解説、さらに応用例を4つ含めています。
目次
基本的なシャットダウン方法
Linuxでのシャットダウンは非常に簡単です。一番基本的な方法は`shutdown`コマンドを使用することです。
sudo shutdown -h now # 即座にシステムをシャットダウン
時間指定によるシャットダウン
sudo shutdown -h +60 # 60分後にシステムをシャットダウン
上記のコマンドを用いると、60分後にシステムが自動的にシャットダウンします。
スケジュール設定を用いたシャットダウン
atコマンドを用いる方法
echo "shutdown -h now" | at midnight # 真夜中にシステムをシャットダウン
この方法は一度だけのスケジュールを設定するのに適しています。
cronを用いる方法
0 2 * * * /sbin/shutdown -h now # 毎日午前2時にシステムをシャットダウン
この方法は定期的なシャットダウンを行いたい場合に有用です。
応用例
特定のプロセスが終了したらシャットダウンする
#!/bin/bash
while true; do
if ! pgrep "特定のプロセス"; then
shutdown -h now
exit 0
fi
sleep 60
done
ディスク使用量が一定以上ならシャットダウンする
#!/bin/bash
threshold=90
while true; do
usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $usage -gt $threshold ]; then
shutdown -h now
exit 0
fi
sleep 3600
done
外部からのリモートコマンドでシャットダウンする
#!/bin/bash
port=8080
nc -l $port | while read line; do
if [ "$line" == "shutdown" ]; then
shutdown -h now
exit 0
fi
done
特定の時間にCPU使用率が低ければシャットダウンする
#!/bin/bash
threshold=10
time="23:00"
while true; do
if [ "$(date +'%H:%M')" == "$time" ]; then
cpu=$(mpstat | awk '/all/ {print 100 - $12}')
if [ $(echo "$cpu < $threshold" | bc) -eq 1 ]; then
shutdown -h now
exit 0
fi
fi
sleep 60
done
まとめ
Linuxで一定時間後や条件に応じてシャットダウンする方法にはいくつかの手法が存在します。基本的な`shutdown`コマンドから、より複雑な`at`や`cron`によるスケジュール設定、さらにはシェルスクリプトを使用した応用例まで、需要と状況に応じて適切な方法を選びましょう。
コメント