linux シェル学習ノート 5日目
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
要約レビュー
関数のメリット
コラボレーション
確認が容易
高度な柔軟性
タスクのスケジューリング方法
で
クーランタブ
関連
-
[解決済み】 mean() 警告:引数が数値または論理でない:NAを返す
-
[解決済み】lm.fit(x,y,offset = offset, singular.ok,...) boxcox式で0非NAケースでエラーになる。
-
[解決済み】C++で「Xは型名ではありません」エラー
-
[解決済み】mysqli_fetch_array() は、パラメータ 1 が mysqli_result であることを期待し、boolean は【重複】で与えられました。
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない。
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み] このコマンドに関連する開いているDataReaderがすでにあり、最初にそれを閉じる必要があります。
-
[解決済み】fe_sendauth: パスワードが供給されない
-
[解決済み] [Solved] Inconsistent Accessibility: パラメータ型はメソッドよりアクセスしにくい
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
InstallShield でレジストリキーを取得するスクリプト
-
FcScript V1.0 ヘルプファイル(説明書付き
-
[解決済み】マージが終了していない(MERGE_HEADが存在する)。
-
[解決済み】行列式で「数値/複雑な行列/ベクトルの引数が必要です」というエラーが発生?
-
[解決済み】C言語で "Abort trap: 6 "エラー?
-
[解決済み】「解放されるポインタが割り当てられていない」とは、具体的にどういう意味ですか?
-
[解決済み】ValueError: コンボリューション使用中のオブジェクトが目的の配列に対して深すぎる
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】Javascript Uncaught TypeError: 未定義のプロパティ'0'を読み取れない
-
[解決済み】Rで初めてニューラルネットを扱うと、"requires numeric/complex matrix/vector arguments "と表示される。