シェルスクリプトの最近のブログ記事

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

tarでのバックアップ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[root@localhost ~]# tar zcvf $HOME/backup`date +%m%d`.tar.gz $HOME/ATBK5TH
tar: メンバ名から先頭の `/' を取り除きます
/home/admin/ATBK5TH/
/home/admin/ATBK5TH/atmarkit.ini
/home/admin/ATBK5TH/index.html
/home/admin/ATBK5TH/insert.php
/home/admin/ATBK5TH/update.ini
/home/admin/ATBK5TH/select.php
/home/admin/ATBK5TH/jscripts.ini
/home/admin/ATBK5TH/update.php
/home/admin/ATBK5TH/insert_form.ini
/home/admin/ATBK5TH/grant.sql
/home/admin/ATBK5TH/select_form.ini
/home/admin/ATBK5TH/ADDRESS.sql
/home/admin/ATBK5TH/image/
/home/admin/ATBK5TH/image/back.gif
/home/admin/ATBK5TH/image/0.gif
/home/admin/ATBK5TH/image/sakujo.gif
/home/admin/ATBK5TH/image/title1.gif
/home/admin/ATBK5TH/image/1shori.gif
/home/admin/ATBK5TH/image/title2.gif
/home/admin/ATBK5TH/image/henko.gif
/home/admin/ATBK5TH/image/xpress2.gif
/home/admin/ATBK5TH/image/line.gif
/home/admin/ATBK5TH/image/uketsuke.gif
/home/admin/ATBK5TH/image/kensaku.gif
/home/admin/ATBK5TH/delete.php
[root@localhost ~]# ls
ATBK5TH              backup0105.tar.gz  dumpbackup2   iptable_config_base.sh    dumpbackup         index.html.1  modsecurity_crs_20071222.conf  source
[root@localhost ~]#

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

tarアーカイブの中身を確認する。  (tfオプション)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[root@localhost ~]# tar tf backup0105.tar.gz
home/admin/ATBK5TH/
home/admin/ATBK5TH/atmarkit.ini
home/admin/ATBK5TH/index.html
home/admin/ATBK5TH/insert.php
home/admin/ATBK5TH/update.ini
home/admin/ATBK5TH/select.php
home/admin/ATBK5TH/jscripts.ini
home/admin/ATBK5TH/update.php
home/admin/ATBK5TH/insert_form.ini
home/admin/ATBK5TH/grant.sql
home/admin/ATBK5TH/select_form.ini
home/admin/ATBK5TH/ADDRESS.sql
home/admin/ATBK5TH/image/
home/admin/ATBK5TH/image/back.gif
home/admin/ATBK5TH/image/0.gif
home/admin/ATBK5TH/image/sakujo.gif
home/admin/ATBK5TH/image/title1.gif
home/admin/ATBK5TH/image/1shori.gif
home/admin/ATBK5TH/image/title2.gif
home/admin/ATBK5TH/image/henko.gif
home/admin/ATBK5TH/image/xpress2.gif
home/admin/ATBK5TH/image/line.gif
home/admin/ATBK5TH/image/uketsuke.gif
home/admin/ATBK5TH/image/kensaku.gif
home/admin/ATBK5TH/delete.php
[root@localhost ~]#
[root@localhost ~]#

do ~ while

| | コメント(0) | トラックバック(0)

━━━━━━━━━━━━━━━━━━━━━━━━━━

for文やwhile文にて繰り返し,部分はdo~doneとして定義する。

━━━━━━━━━━━━━━━━━━━━━━━━━━

以下の文は,3分毎にログファイル末尾10桁を表示している。

 

do_while.jpg

crontab

| | コメント(0) | トラックバック(0)

 

[root@localhost ~]# ps -Af | grep cron
root      2278     1  0 21:18 ?        00:00:00 crond
root      3305  3240  0 22:44 pts/0    00:00:00 grep cron
[root@localhost ~]# /var/spool/cron/root ← ユーザー毎にcrontabの設定をする。

 

書式

<分> <時> <日> <月> <曜日> <コマンド>

<分> 0~59までの整数

<時> 0~23までの整数

<日> 1~31までの整数

<月> 1~12までの整数

<曜日> 0~7までの整数 (0,7 : 日曜~6:土曜日)

<コマンド> 実行するコマンド,シェルスクリプトなど。

 

(日次例)
23時45分に毎日実行

45 23 * * * /home/admin/filechk.sh

(週次例)
月曜日の9時と12時に実行 (複数の値を指定しているので,","で9時と12時を区切っています。

0 9,12  * * 1  /home/admin/filechk.sh

(2時間毎)
2時間毎にジョブを実行 (2分,2時間などと設定する場合は,"*/2"のように設定します。

0 */2  * * *  /home/admin/filechk.sh

システム用のcrontabファイル(/etc/crontab)もあります。このファイルでは実行ユーザー名の指定をします。

 

crontab.jpg

/etc/cron.deny  /etc/crontab
/etc/cron.d:
/etc/cron.daily:
/etc/cron.hourly:
/etc/cron.monthly:
/etc/cron.weekly:

※システムダウン中に実行されるべきジョブがシステム復旧後に自動的に実行されるようにするには,

anacronを利用します。

[root@localhost ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

1       65      cron.daily              run-parts /etc/cron.daily
7       70      cron.weekly             run-parts /etc/cron.weekly
30      75      cron.monthly            run-parts /etc/cron.monthly
[root@localhost ~]#

 

おまけ:

ジョブを一回実行する場合は,ATコマンドを利用します。

対話モード

[root@localhost ~]# at 23:40
at> /sbin/shutdown -h now
at> <EOT>                      ←Ctrl+Dで終了
job 1 at 2007-11-25 23:40
[root@localhost ~]# at -l
1       2007-11-25 23:40 a root
[root@localhost ~]#

『結果 ↓ 無事に実行されました。』 

[root@localhost ~]# date
2007年 11月 25日 日曜日 23:40:00 JST
[root@localhost ~]#
Broadcast message from root (Sun Nov 25 23:40:00 2007):

The system is going down for system halt NOW!

 

 

非対話モード

[root@localhost ~]# at -f /home/admin/at.sh 23:30
job 2 at 2007-11-25 23:30
[root@localhost ~]# at -l
1       2007-11-25 23:40 a root
2       2007-11-25 23:30 a root
[root@localhost ~]#

 

真夜中:midnight 今日:today 明日:tomorrow 2日後:now + 2days 2週間後の10時PM: 22:00 + 2weeks

※ at -dコマンドで実行中のジョブを削除出来ます。

※ atqコマンド, atrmコマンド


cronやatのアクセス制御

 /etc/cron.allow ← 登録されたユーザーのみCronを利用出来る。

 /etc/cron.deny ← cron.allowが無ければ,cron.denyに記述されていない全てのユーザーが利用出来る。

※どちらのファイルも無ければ,全てのユーザーがcronを利用出来る。

/etc/at.allow

/etc/at.deny

※どちらのファイルも無ければ,rootだけがatを利用出来る。

 

[admin@localhost extra]$ grep -v ^# httpd-info.conf


<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .example.com
</Location>


<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from .example.com
</Location>
[admin@localhost extra]$ egrep -v -e "#" httpd-info.conf


<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .example.com
</Location>


<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from .example.com
</Location>
[admin@localhost extra]$

 

[admin@localhost extra]$ egrep -e "SetHandler" httpd-info.conf
    SetHandler server-status
    SetHandler server-info
[admin@localhost extra]$

 

正規表現利用.jpg

バッチを組むときに使える,testコマンド

[root@localhost ~]# test -f t; echo $? <----ファイルが無い
1
[root@localhost ~]# test -f lslink ; echo $? <----ファイルが有る
0
[root@localhost ~]#

==========================================================

testコマンド

説明
       test は条件式 expr を評価した結果によって、 0 (真) または 1 (偽) を終了ステータスとして返す。

       式 の各部分はそれぞれ分離された引数でなければならない。式は単項式あるいは二項式である。 test はファイ
       ルのステータス調査、文字列操作、数値の比較演算を行うことができる。

       ほとんどのシェルには同名の組み込みコマンドがあるので、単に 'test' として実行すると、ここで記述され た
       ものとは異なった機能のものが実行されるだろう。

   ファイル形式のテスト
       -b file
              file が存在し、ブロックスペシャルファイルであれば真。
       -c file
              file が存在し、キャラクタスペシャルファイルであれば真。
       -d file
              file が存在し、ディレクトリであれば真。
       -f file
              file が存在し、通常ファイル (regular file) であれば真。
       -h file
       -L file
              file が存在し、シンボリックリンクであれば真。
       -p file
              file が存在し、名前付きパイプ (named pipe) であれば真。
       -S file
              file が存在し、ソケットであれば真。
       -t [fd]
              fd が端末でオープンされていれば真。 fd が省略された場合のデフォルト値は 1 (標準出力)。

   ファイルのパーミッションのテスト
       -g file
              file が存在し、set GID されていれば真。
       -k file
              file が存在し、 sticky ビットが立っていれば真。
       -r file
              file が存在し、読み取り可能であれば真。
       -u file
              file が存在し、 set SUID されていれば真。
       -w file
              file が存在し、書き込み可能であれば真。
       -x file
              file が存在し、実行可能であれば真。
       -O file
              file が存在し、現在の実効ユーザー id による所有であれば真。
       -G file
              file が存在し、現在の実効グループ id による所有であれば真。

   ファイル特性のテスト
       -e file
              file が存在すれば真。
       -s file
              file が存在し、サイズが 0 より大きければ真。
       file1 -nt file2
              file1 が file2 より (修正時刻で比較して) 新しければ真。
       file1 -ot file2
              file1 が file2 より古ければ真。
       file1 -ef file2
              file1 と file2 のデバイス番号と i-ノード番号が共に等しければ真。

   文字列のテスト
       string
       -n string
              string の長さが 0 より大きければ真。
       -z string
              string の長さが 0 であれば真。
       string1 = string2
              二つの文字列が等しければ真。
       string1 != string2
              二つの文字列が等しくなければ真。

   数値のテスト
       arg1 OP arg2
              OP は -eq, -ne, -lt, -le, -gt, -ge のいずれか。これらの代数二項演算子は、それぞれ arg1 が arg2
              (に等しい、に等しくない、より小さい、より小さいか等しい、より大きい、より大きいか等しい) 条 件
              を 満たせば真。 arg1 および arg2 は正の整数、負の整数をとることができる。また -l string という
              特殊な式を指定することもでき、この場合は string の長さとなる。

   テストの論理結合
       ! expr expr が偽であれば真。
       expr1 -a expr2
              expr1 と expr2 の両方が真であれば真。
       expr1 -o expr2
              expr1 か expr2 のどちらかが真であれば真。

==========================================================

 

############################################

(例) 以下のような内容でバッチを作成してみる。

############################################

[root@localhost ~]# cat filechk.sh
#!/bin/bash

if test -f lsld
then
        echo "ファイルがありました。シェルを実行します"
        ./lsld
else
        "スクリプトが存在しませんでした,処理を中止いたします"
fi
[root@localhost ~]#

 

 

↓ 実行

 

[root@localhost ~]# ./filechk.sh
ファイルがありました。シェルを実行します
Link Files
Directories
drwxr-xr-x 2 admin admin     4096 10月  4 21:11 Desktop
drwxr-xr-x 4 root  root      4096 10月  8 00:16 postsource
drwxr-xr-x 3 root  root      4096 10月 27 01:50 source
[root@localhost ~]#

 

追記: test = [ ] コマンドです。

[root@localhost ~]# cat filechk2.sh
#!/bin/bash

if [ -f lsld ]

then
        echo "ファイルがありました。シェルを実行します"
        ./lsld
else
        "スクリプトが存在しませんでした,処理を中止いたします"
fi


[root@localhost ~]# ./filechk2.sh
ファイルがありました。シェルを実行します
Link Files
Directories
drwxr-xr-x 2 admin admin     4096 10月  4 21:11 Desktop
drwxr-xr-x 3 admin admin     4096  8月 12  2002 atmarkit5th
drwxr-xr-x 4 root  root      4096 10月  8 00:16 postsource
drwxr-xr-x 3 root  root      4096 10月 27 01:50 source
drwxr-xr-x 5  1000  1000     4096  5月 12  2007 vim71
[root@localhost ~]#

[root@localhost ~]# cat lsld <-----サンプルシェルスクリプト
ls -l $1 > lslink
echo "Link Files"
grep '^l' lslink
echo "Directories"
grep '^d' lslink
[root@localhost ~]#


[root@localhost etc]# source lsld  <-----(「sourceコマンド」, 「. lsld」, 「./lsldなど(chmod755後)」)
Link Files
lrwxrwxrwx  1 root root      22 10月  5 04:31 grub.conf -> ../boot/grub/grub.conf
lrwxrwxrwx  1 root root      11 10月  5 03:27 init.d -> rc.d/init.d
lrwxrwxrwx  1 root root       7 10月  5 03:47 rc -> rc.d/rc
lrwxrwxrwx  1 root root      13 10月  5 03:47 rc.local -> rc.d/rc.local
lrwxrwxrwx  1 root root      15 10月  5 03:47 rc.sysinit -> rc.d/rc.sysinit
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc0.d -> rc.d/rc0.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc1.d -> rc.d/rc1.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc2.d -> rc.d/rc2.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc3.d -> rc.d/rc3.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc4.d -> rc.d/rc4.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc5.d -> rc.d/rc5.d
lrwxrwxrwx  1 root root      10 10月  5 03:47 rc6.d -> rc.d/rc6.d
lrwxrwxrwx  1 root root      11 10月  5 03:29 rmt -> ../sbin/rmt
Directories
drwxr-xr-x  2 root root    4096  3月 15  2007 NetworkManager
drwxr-xr-x  8 root root    4096 10月  5 04:31 X11
drwxr-xr-x  4 root root    4096 10月  5 03:59 acpi
drwxr-xr-x  4 root root    4096 10月  5 03:38 alsa
drwxr-xr-x  2 root root    4096 10月  5 04:22 alternatives
drwxr-x---  2 root root    4096 10月  5 03:51 audit
drwxr-xr-x  4 root root    4096 10月  5 03:47 avahi
drwxr-xr-x  2 root root    4096 11月 10 22:19 blkid
drwxr-xr-x  2 root root    4096 10月  5 03:59 bluetooth
drwxr-xr-x  2 root root    4096 10月  5 03:29 bonobo-activation
drwx------  2 root root    4096  3月 15  2007 cron.d
drwxr-xr-x  2 root root    4096 10月  5 04:04 cron.daily
drwxr-xr-x  2 root root    4096  1月  6  2007 cron.hourly
drwxr-xr-x  2 root root    4096 10月  5 03:34 cron.monthly
drwxr-xr-x  2 root root    4096 10月  5 03:45 cron.weekly
drwxr-xr-x  5 root lp      4096 10月  5 03:48 cups
drwxr-xr-x  3 root root    4096 10月  5 03:39 dbus-1
drwxr-xr-x  2 root root    4096 10月  5 03:37 default
drwxr-xr-x  2 root root    4096 10月  5 03:38 depmod.d
drwxr-xr-x  2 root root    4096  1月  6  2007 desktop-profiles
drwxr-xr-x  3 root root    4096 10月  5 03:52 dev.d
drwxr-xr-x  2 root root    4096 10月  5 03:59 firmware
drwxr-xr-x  4 root root    4096 10月  5 03:37 fonts
drwxr-xr-x  2 root root    4096 10月  5 03:49 foomatic
drwxr-xr-x  2 root root    4096 10月  5 04:26 gaim
drwxr-xr-x  6 root root    4096 10月  5 03:39 gconf
drwxr-xr-x  7 root root    4096 10月  5 04:12 gdm
drwxr-xr-x  2 root root    4096 10月  5 04:18 ghostscript
drwxr-xr-x  4 root root    4096  1月  7  2007 gimp
drwxr-xr-x  3 root root    4096 10月  5 04:04 gnome-vfs-2.0
drwxr-xr-x  2 root root    4096 10月  5 04:08 gre.d
drwxr-xr-x  3 root root    4096 10月  5 03:40 gtk-2.0
drwxr-xr-x  3 root root    4096 10月  5 03:52 hal
drwxr-xr-x  2 root root    4096 10月  5 03:30 iproute2
drwxr-xr-x  2 root root    4096 10月 14 03:01 ld.so.conf.d
drwxr-xr-x  2 root root    4096 10月 14 17:57 logrotate.d
drwxr-xr-x  4 root root    4096 10月  5 04:02 logwatch
drwxr-xr-x  2 root root    4096 10月  5 03:57 lsb-release.d
drwxr-xr-x  4 root root    4096 10月 14 22:52 lvm
drwxr-xr-x  2 root root    4096 10月  5 03:49 mail
drwxr-xr-x  2 root root    4096 10月  5 03:52 makedev.d
drwxr-xr-x  2 root root    4096 10月  5 03:34 mgetty+sendfax
drwxr-xr-x  2 root root    4096 10月  5 03:38 modprobe.d
drwxr-xr-x  2 root root    4096 10月  5 03:42 netplug
drwxr-xr-x  2 root root    4096 10月  5 03:42 netplug.d
drwxr-xr-x  2 root root    4096 10月  5 04:23 ntp
drwxr-xr-x  2 root root    4096  1月  6  2007 oddjob
drwxr-xr-x  2 root root    4096 10月  5 04:11 oddjobd.conf.d
drwxr-xr-x  3 root root    4096 10月  5 03:37 openldap
drwxr-xr-x  2 root root    4096  3月 30  2007 opt
drwxr-xr-x  2 root root    4096 11月 10 02:38 pam.d
drwxr-xr-x  2 root root    4096 10月  5 03:59 pam_pkcs11
drwxr-xr-x  3 root root    4096 10月  5 03:38 pango
drwxr-xr-x  2 root root    4096 10月  5 03:57 pcmcia
drwxr-xr-x  6 root root    4096 10月  5 03:37 pki
drwxr-xr-x  5 root root    4096 10月  5 03:48 pm
drwxr-xr-x  3 root root    4096 10月  5 03:58 ppp
drwxr-xr-x  2 root root    4096 10月  5 04:04 profile.d
drwxr-xr-x  3 root root    4096 10月  5 03:59 racoon
drwxr-xr-x 10 root root    4096 10月  5 03:47 rc.d
drwxr-xr-x  2 root root    4096 10月  5 04:02 readahead.d
drwxr-xr-x  2 root root    4096 10月  5 04:05 reader.conf.d
drwxr-xr-x  2 root root    4096 10月  5 03:57 redhat-lsb
drwxr-xr-x  3 root root    4096 10月  5 03:58 rhgb
drwxr-xr-x  2 root root    4096 10月  5 03:57 rpm
drwxr-xr-x  2 root root    4096  3月 22  2007 rwtab.d
drwxr-xr-x  2 root root    4096 10月  5 03:48 samba
drwxr-xr-x  2 root root    4096 10月  5 04:22 sane.d
drwxr-xr-x  2 root root    4096  1月  7  2007 sasl2
drwxr-xr-x  2 root root    4096 10月  5 03:40 scim
drwxr-xr-x  4 root root    4096 10月  5 03:47 security
drwxr-xr-x  3 root root    4096 10月 14 16:53 selinux
drwxr-xr-x  2 root root    4096 10月  5 03:58 setuptool.d
drwxr-xr-x  2 root root    4096 10月  5 03:59 sgml
drwxr-xr-x  2 root root    4096 10月  5 03:55 skel
drwxr-xr-x  2 root root    4096  3月 15  2007 smrsh
drwxr-xr-x  3 root root    4096  3月 15  2007 sound
drwxr-xr-x  2 root root    4096 10月  4 21:26 ssh
drwxr-xr-x  2 root root    4096  1月  7  2007 stunnel
drwxr-xr-x  2 root root    4096  3月 15  2007 subversion
drwxr-xr-x 10 root root    4096 10月 14 22:52 sysconfig
drwxr-xr-x  4 root root    4096 10月  5 03:52 udev
drwxr-xr-x  2 root root    4096 10月  5 03:41 w3m
drwxr-xr-x  2 root root    4096 10月  5 03:50 wpa_supplicant
drwxr-xr-x  4 root root    4096 10月  5 03:42 xdg
drwxr-xr-x  2 root root    4096 10月  5 04:02 xinetd.d
drwxr-xr-x  2 root root    4096 10月  5 03:59 xml
drwxr-xr-x  3 root root    4096 10月  5 03:59 yum
drwxr-xr-x  2 root root    4096  4月  4  2007 yum.repos.d
[root@localhost etc]#

このアーカイブについて

このページには、過去に書かれたブログ記事のうちシェルスクリプトカテゴリに属しているものが含まれています。

前のカテゴリはtoolsです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

シェルスクリプト: 月別アーカイブ

Powered by Movable Type 4.0