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基礎コマンド(第4回) viエディタの操作・ログの取得

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

CentOS6にVNCServerでリモート接続して日本語入力を可能にする方法

(0)目次&概説 (1) 記事の目的 (2) 日本語化の対応手順  (2-1) ibus系のインストール  (2-2) dbusインストール+エラー回避  (2-3) mocz系パッケージのインストー …

Linuxで環境変数を永続化させる方法と手順について

<目次> (1) Linuxで環境変数を永続化させる方法と手順について  (1-1) 実現方法  (1-2) 設定手順 (1) Linuxで環境変数を永続化させる方法と手順について Linuxにおいて …

CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について

<目次> (1) CentOS6で「Cannot find a valid baseurl for repo」が発生した時の対処方法について  (1-1) 発生状況・エラーメッセージ  (1-2) 原 …

GNOMEのランチャー設定手順をEclipseを例にご紹介

<目次> (1) GNOMEのランチャー設定手順をEclipseを例にご紹介  (1-1) EclipseのGNOME用ランチャー作成手順  (1-2) 備考:上記対応で追加されない場合 GNOMEの …

  • English (United States)
  • 日本語
Top