1. ホーム
  2. スクリプト・コラム
  3. その他

linux シェル学習ノート 5日目

2022-01-07 01:18:31

5日目:関数とタスクスケジューリング

関数のメリット

ディバイド・アンド・コンカー(Divide and conquerf

連動

管理しやすい

メンテナンスが容易

機能の構造

    関数 function name()

    {

        コマンド1

        コマンド2

        コマンド3

    }

関数の引数渡し

    関数に引数を渡すのは、通常のスクリプトで特殊変数 $1,$2,$3...$9 を使うようなもので、関数は渡された引数を受け取り、元の引数をシェルスクリプトに渡すので、最初に関数内の変数をリセットして渡された引数を保存しておくとよいでしょう。こうすることで、関数内でちょっとしたミスがあっても、ローカライズされた変数名ですぐに追跡することができる。

関数ファイル

    よく使う関数を電話するときは、関数ファイルに入れて、そのファイルをシェルに読み込ませることができます。

    ファイルのヘッダーには、#! /bin/bash という文が含まれていて、名前は自由に決められますが、できれば問題のタスクと実際に関係があるものが望ましいです。

    は #! /bin/bash

    #コメント

    関数1()

    {

    }

関数ファイルの例

関数.main

#! /bin/bash

#functions.main

findit()

{

    if [$# -lt 1 ];then

        echo "使用法:findit file"

        1を返す

    フィ

    find / -name $1 -peint

}

機能使用例

    . functions.main 関数を読み込む

    関数がロードされたかどうかを確認するための設定

    finditは関数を呼び出します。

    findit functions.main 関数を呼び出す

    unset findit findit関数を削除します。

シングルタスク・スケジューリング

    は、指定した時刻に1回限りのタスクをスケジュールするために使用します。

    形式です。

        at [オプション] 時間

            -f ファイルからコマンドやスクリプトを読み込む

            -m ジョブ完了後、ユーザーにメールを送信します。

            -v ジョブが実行された日時を表示します

    サービスの開始と停止

        サービスATD開始

        サービスATD停止

    タスクatrmの削除

単一タスクのスケジューリング例

    at -f mycrontest.sh 明日の午後10時00分

    at -f mycrontest.sh 火曜日の午前2時00分

    at -f mycrontest.sh 2月11日午後2時00分

    at -f mycrontest.sh 2:00pm next week

crontabの再帰的スケジューリング

    crontabは、多くのジョブタスクを一定時間ごとに実行することができます。linuxが起動するたびに自動的に起動するスクリプトです。

    形式です。

        crontab [-e [ユーザー名]|l [ユーザー名]|r [ユーザー名]]].

            -e は、スケジュールを設定するためにテキストエディタを実行します。

            -l スケジュールを設定するテキストエディターをリストアップします。

            -r 現在のタイムシートを削除します。

            -v ユーザーcronジョブのステータスをリストアップします。

crontabの設定

    crontabは、多くのジョブタスクを一定時間ごとに実行することができます。linuxが起動するたびに自動的に起動するスクリプトです。

    グローバル設定ファイル /etc/crontab

    ユーザー設定ファイル /var/spool/cron/

crontabのユーザー設定

    /etc/cron.allow

    /etc/cron.deny

/etc/crontab

SHELL=/bin/bash

PATH=/sbin;/bin:/usr/sbin;/usr/bin

MAILTO=root

HOME=/

01 **** root run-parts /etc/cron.hourly

02 4*** root run-parts /etc/cron.daily

22 4**0 root run-parts /etc/cron.weekly

42 41** root run-parts /etc/cron.monthly

 5つのフィールドを時間、日、月、週で分割

crontabアプリケーションのシナリオ

    ゲートウェイ192.168.1.254への接続性を5分ごとにテストする ping */5 * * * * * *

    ユーザーalexは、毎週日曜日の正午にsambaの設定ファイルをバックアップする

    0 12 * * 0 tar -czvf samba.tar.gz /etc/samba/smb.conf

要約レビュー

    関数のメリット

        コラボレーション

        確認が容易

        高度な柔軟性

タスクのスケジューリング方法

        で

        クーランタブ