⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1042.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
新的backup <br>
#!/bin/sh  <br>
HOSTNAME=`hostname`  <br>
DIRS="/etc /var /your_important_directory"  <br>
BACKUP="/tmp/$HOSTNAME.tgz"  <br>
NFS="/mnt/nfs"  <br>
<br>
tar -c $DIRS | gzip -9 &gt; $BACKUP  <br>
mv -f $BACKUP $NFS  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
备份主机内的Script : collect_backup <br>
#!/bin/sh  <br>
NFS="/mnt/nfs"  <br>
BACKUP="/backup"  <br>
<br>
mv -f $NFS/*.tgz $BACKUP  <br>
   <br>
<br>
在此,您不能够将所有备份都直接放在/mnt/nfs,这是危险的。万一任一台机器不小心将/mnt/nfs所有内容删除,那麽备份就会消失。因此,您需要将/mnt/nfs移到一个只有该备份主机可存取的目录中。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
当这些个别的Script都测试好以後,接下来我们将他们放到crontab里面。找到您的crontab,它的位置可能在/var/spool/cron/crontabs/root、/etc/crontab、/var/cron/tabs/root。  <br>
在crontab中选择以下之一加入(看您定期的时间):  <br>
<br>
Slackware : /var/spool/cron/crontabs/root <br>
01 * * * *  /full_backup_script_path/backup 1&gt; /dev/null 2&gt; /dev/null # 每小时(太过火一点)  <br>
30 16 * * *  /full_backup_script_path/backup 1&gt; /dev/null 2&gt; /dev/null # 每日16:30,下班前备份  <br>
30 16 * * 0  /full_backup_script_path/backup 1&gt; /dev/null 2&gt; /dev/null # 每周一16:30  <br>
0 5 1 * *  /full_backup_script_path/backup 1&gt; /dev/null 2&gt; /dev/null # 每月一号5:0  <br>
RedHat/Debian : /etc/crontab <br>
RedHat可直接将backup放入/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly。或采用如上加入/etc/crontab的方式:  <br>
有关crontab的用法,可查"man 5 crontab",在此不详述。  <br>
<br>
备份主机的设定类同。  <br>
<br>
注意: 所有机器不要同时进行备份,否则网路会大塞车。备份主机收取备份的时间要设为最後,否则会收不到备份资料。您可以在实作後,将时间间隔调整一下。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
看看,两个小小不到三行的Shell Script,配合cron这个定时工具。可以让原本需要耗时多个小时的人工备份工作,简化到不到十分钟。善用您的想像力,多加一点变化,可你让您的生活变得轻松异常,快乐悠哉。  <br>
 <br>
 <br>
Linux程式设计-11.Shell Script(bash)--(4)档案系统检查 <br>
http://www.openchess.org/noitatsko/programming/ (2001-05-25 11:00:00) <br>
系统安全一向是大多数电脑用户关心的事,在UNIX系统中,最重视的事,即系统中有没有"木马"(Trojan horse)。不管Trojan horse如何放进来的,有一点始终会不变,即被放置木马的档案,其档案日期一定会被改变,甚至会有其它的状态改变。此外,许多状况下,系统会多出一些不知名的档案。因此,平日检查整个档案系统的状态是否有被改变,将所有状态有改变的档案,以及目前有那些程式正在执行,自动报告给系统管理员,是个避免坐上"木马"的良方。  <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
#!/bin/sh  <br>
# Filename : whatever_you_name_it  <br>
DIRS="/etc /home /bin /sbin /usr/bin /usr/sbin /usr/local /var /your_directory"  <br>
ADMIN="email@your.domain.com"  <br>
FROM="admin@your.domain.com"  <br>
# 写入Sendmail的标头  <br>
echo "Subject: $HOSTNAME filesystem check" &gt; /tmp/today.mail  <br>
echo "From: $FROM" &gt;&gt; /tmp/today.mail  <br>
echo "To: $ADMIN" &gt;&gt; /tmp/today.mail  <br>
echo "This is filesystem report comes from $HOSTNAME" &gt;&gt; /tmp/today.mail  <br>
# 报告目前正在执行的程式  <br>
ps axf &gt;&gt; /tmp/today.mail  <br>
# 档案系统检查  <br>
echo "File System Check" &gt;&gt; /tmp/today.mail  <br>
ls -alR $DIRS | gzip -9 &gt; /tmp/today.gz  <br>
zdiff /tmp/today.gz /tmp/yesterday.gz &gt;&gt; /tmp/today.mail  <br>
mv -f /tmp/today.gz /tmp/yesterday.gz  <br>
# 寄出信件  <br>
sendmail -t &lt; /tmp/today.mail  <br>
<br>
然後把它放到一个不显眼的地方去,让别人找不到。  <br>
<br>
把它加入crontab中。  <br>
<br>
30 7 * * *  /full_check_script_path/whatever_you_name_it 1&gt; /dev/null 2&gt; /dev/null #上班前检查  <br>
<br>
有些档案是固定会更动的,像/var/log/messages、/var/log/syslog、/dev/ttyX等等,不要太大惊小怪。  <br>
 <br>
 <br>
Linux程式设计-11.Shell Script(bash)--(5)控制圈for <br>
http://www.openchess.org/noitatsko/programming/ (2001-05-25 12:10:00) <br>
<br>
示了几个简单的Shell Script,相信您应该对Shell Script有点概念了。现在我们开始来仔细研究一些较高等的Shell Script写作。一些进一步的说明,例如"$"、"&gt;"、"&lt;"、"&gt;&gt;"、"1&gt;"、"2&gt;"符号的使用,会在稍後解释。  <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
for name [ in word; ] do list ; done <br>
控制圈。  <br>
word是一序列的字,for会将word中的个别字展开,然後设定到name上面。list是一序列的工作。如果[in word;]省略掉,那麽name将会被设定为Script後面所加的参数。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例一:  <br>
#!/bin/sh  <br>
<br>
for i in a b c d e f ; do  <br>
    echo $i  <br>
done  <br>
<br>
它将会显示出a到f。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例二: 另一种用法,A-Z <br>
#!/bin/sh  <br>
WORD="a b c d e f g h i j l m n o p q r s t u v w x y z"  <br>
<br>
for i in $WORD ; do  <br>
  echo $i  <br>
done  <br>
<br>
这个Script将会显示a到z。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例三 : 修改副档名 <br>
如果您有许多的.txt档想要改名成.doc档,您不需要一个一个来。  <br>
#!/bin/sh  <br>
<br>
FILES=`ls /txt/*.txt`  <br>
<br>
for txt in $FILES ; do  <br>
  doc=`echo $txt | sed "s/.txt/.doc/"`  <br>
  mv $txt $doc  <br>
done  <br>
<br>
这样可以将*.txt档修改成*.doc档。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例四 : meow <br>
#!/bin/sh  <br>
# Filename : meow  <br>
for i ; do  <br>
    cat $i  <br>
done  <br>
<br>
当您输入"meow file1 file2 ..."时,其作用就跟"cat file1 file2 ..."一样。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例五 : listbin  <br>
#!/bin/sh  <br>
# Filename : listbin  <br>
<br>
for i in /bin/* ; do  <br>
    echo $i  <br>
done  <br>
<br>
当您输入"listbin"时,其作用就跟"ls /bin/*"一样。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例六 : /etc/rc.d/rc  <br>
拿一个实际的例来说,Red Hat的/etc/rc.d/rc的启动程式中的一个片断。  <br>
<br>
for i in /etc/rc.d/rc$runlevel.d/S*; do  <br>
    # Check if the script is there.  <br>
    [ ! -f $i ] && continue  <br>
<br>
    # Check if the subsystem is already up.  <br>
    subsys=${i#/etc/rc.d/rc$runlevel.d/S??}  <br>
    [ -f /var/lock/subsys/$subsys ] ||   <br>
    [ -f /var/lock/subsys/${subsys}.init ] && continue  <br>
<br>
    # Bring the subsystem up.  <br>
     $i start  <br>
done  <br>
<br>
这个例中,它找出/etc/rc.d/rcX.d/S*所有档案,检查它是否存在,然後一一执行。  <br>
 <br>
 <br>
Linux程式设计-11.Shell Script(bash)--(6)流程控制case <br>
http://www.openchess.org/noitatsko/programming/ (2001-05-25 13:04:01) <br>
case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac <br>
case/esac的标准用法大致如下:  <br>
case $arg in  <br>
    pattern | sample) # arg in pattern or sample  <br>
    ;;  <br>
    pattern1) # arg in pattern1  <br>
    ;;  <br>
    *) #default  <br>
    ;;  <br>
esac  <br>
arg是您所引入的参数,如果arg内容符合pattern项目的话,那麽便会执行pattern以下的程式码,而该段程式码则以两个分号";;"做结尾。  <br>
<br>
可以注意到"case"及"esac"是对称的,如果记不起来的话,把"case"颠倒过来即可。  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例一 : paranoia <br>
#!/bin/sh  <br>
case $1 in  <br>
        start | begin)  <br>
          echo "start something"  <br>
        ;;  <br>
        stop | end)  <br>
          echo "stop something"  <br>
        ;;  <br>
        *)  <br>
          echo "Ignorant"  <br>
        ;;  <br>
esac  <br>
<br>
执行 <br>
[foxman@foxman bash]# chmod 755 paranoia  <br>
[foxman@foxman bash]# ./paranoia  <br>
Ignorant  <br>
[foxman@foxman bash]# ./paranoia start  <br>
start something  <br>
[foxman@foxman bash]# ./paranoia begin  <br>
start something  <br>
[foxman@foxman bash]# ./paranoia stop  <br>
stop something  <br>
[foxman@foxman bash]# ./paranoia end  <br>
stop something  <br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例二 : inetpanel <br>
许多的daemon都会附上一个管理用的Shell Script,像BIND就附上ndc,Apache就附上apachectl。这些管理程式都是用shell script来写的,以下示一个管理inetd的shell script。  <br>
#!/bin/sh  <br>
<br>
case $1 in  <br>
    start | begin | commence)  <br>
       /usr/sbin/inetd  <br>
    ;;  <br>
    stop | end | destroy)  <br>
       killall inetd  <br>
    ;;  <br>
    restart | again)  <br>
       killall -HUP inetd  <br>
    ;;  <br>
    *)  <br>
       echo "usage: inetpanel [start | begin | commence | stop | end | destory | restart | again]"  <br>
    ;;  <br>
esac  <br>
<br>
<br>
<br>
-------------------------------------------------------------------------------- <br>
<br>
例三 : 判断系统 <br>
有时候,您所写的Script可能会跨越好几种平台,如Linux、FreeBSD、Solaris等等,而各平台之间,多多少少都有不同之处,有时候需要判断目前正在那一种平台上执行。此时,我们可以利用uname来找出系统资讯。  <br>
#!/bin/sh  <br>
<br>
SYSTEM=`uname -s`  <br>
<br>
case $SYSTEM in  <br>
    Linux)  <br>
        echo "My system is Linux"  <br>
        echo "Do Linux stuff here..."  <br>
    ;;  <br>
    FreeBSD)  <br>
        echo "My system is FreeBSD"  <br>
        echo "Do FreeBSD stuff here..."  <br>
    ;;  <br>
    *)  <br>
        echo "Unknown system : $SYSTEM"  <br>
        echo "I don't what to do..."  <br>
    ;;  <br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -