Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Linux

Linux:定期的に再起動するスクリプト

投稿日:2017年6月11日 更新日:

Linuxサーバーを定期的に再起動するスクリプトを紹介します。定期的に再起動するという処理はシステム構築においては、運用の中で定義される「死活監視」に関連してくる話になります。

●シェルとは?シェルスクリプトとは?
シェルスクリプトの前にシェルについての概要を記載します。シェルとはユーザーが入力したコマンドを解釈し、カーネルへの橋渡しを行うプログラムです。ユーザが直接OSを操作してエラーや不整合にならないようにOSを守る役割も果たすことからシェル(殻)という名前になったとされています。

シェルスクリプトはスクリプト言語の一種で、シェル(インタプリタ)にて解釈できる命令(コマンド)を組み合わせて作られるプログラムです。拡張子は「.sh」で、プログラミングのように繰り返しや分岐処理を行う事が出来ます。またコンパイルを行わず、インタプリタ(シェル)を指定してソースファイルを上から順番に直接に実行するため、コンパイル型の言語と比較すると速度が遅くなる傾向にあります。また参考までにWindows OSの場合、シェルスクリプトはバッチ処理と呼ばれ「.bat」拡張子で作成されます。

そして「カーネル」はOSの中核をなす部分で、ハードウェアとソフトウェアの仲介役としての各種機能を提供します。具体的には「プロセス管理」(CPUにプロセスを割り当てたり)や「メモリ管理」」や「ファイルシステム」などがあります。「メモリ管理」について、物理メモリと仮想メモリを利用するに際して、物理メモリと紐づく仮想的なアドレスを割り当てるが、その管理を行う。

●シェルスクリプトの一番最初の文言(「#!/bin/sh」など)について
シェルスクリプトの最初にある「#!」から始まる文言は”Shebang”と呼ばれ、実行時のインタプリタの指定を行っています。

●インタプリタについて
インタプリタはプログラムを”実行する都度”、そのプログラムを読み込み、CPUが処理可能な機械語に変換する役割を果たします。一方でコンパイラはプログラミング言語を”事前に”機械語に一括変換し、その状態でCPUに処理命令を行います。

それでは簡単ですがLinuxサーバを定期的に再起動するシェルスクリプトを紹介します。

1.usr/bin の直下にreboot.shを作成

cd /usr/bin
vi reboot.sh

2.以下のコマンドを記述

#!/bin/sh
shutdown -r now

3.etcの直下にcrontabに以下を記述

20 * * * * root sh /usr/bin/reboot.sh

ファイル全体では下記の様になります。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
20 * * * * root sh /usr/bin/reboot.sh

設定項目は左から「分」「時」「日」「月」「曜日」です。上記の例だと、毎日の毎時20分(13時20分→14時20分→15時20分・・・)に再起動する。

4.結果確認

再起動されているかどうかは下記より確認します。

last reboot

表示結果(例)

reboot   system boot  2.6.32-642.15.1. Sun Jun 11 11:21 - 11:40  (00:19)
reboot   system boot  2.6.32-642.15.1. Sun Apr  9 16:49 - 11:20 (62+18:30)
reboot   system boot  2.6.32-642.15.1. Sun Mar 26 17:54 - 11:20 (76+17:25)
reboot   system boot  2.6.32-642.11.1. Sun Mar 26 17:51 - 17:53  (00:02)

 

↓オススメの書籍

新しいLinuxの教科書

Adsense審査用広告コード


Adsense審査用広告コード


-Linux

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Linux基礎コマンド(第1回) TeraTermログイン・pwd・cd

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第1弾です。 (0)目次&概説 >(1) Linuxのディレクトリ構 …

Linux基礎コマンド(第4回) viエディタの操作・ログの取得

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第4弾で、viエディタの使い方を簡単に紹介します。第1弾の記事はこち …

Linuxでアプリケーションサーバを構築する手順の例

<目次> (1) Linuxでアプリケーションサーバを構築する手順の例  (1-1) APサーバの全体像  (1-2) APサーバの構築手順  (1-3) 各手順のURL (1) Linuxでアプリケ …

Linuxのテキスト入力で日本語が文字化けした時の対処法と解説

Linuxのテキスト入力等で日本語が文字化けした時の対処方法を紹介します。 (0)目次&概説 (1) 障害・不具合の概要 (2) 文字化けの対処法 (3) 解説(文字コードについて) (1) 障害・不 …

CentOS6でエラー「Cannot find a valid baseurl for repo: centos-sclo-rh」が出た時の対処メモ

<目次> (1) CentOS6でエラー「Cannot find a valid baseurl for repo: centos-sclo-rh」が出た時の対処メモ  (1-1) エラーメッセージ …

  • English (United States)
  • 日本語
Top