Linuxで一定時間後にシステムをシャットダウンする方法

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`によるスケジュール設定、さらにはシェルスクリプトを使用した応用例まで、需要と状況に応じて適切な方法を選びましょう。

created by Rinker
オライリージャパン
¥3,080 (2024/11/22 17:53:11時点 Amazon調べ-詳細)

コメント

コメントする

目次