网站后台如何登陆,设计网站大全,如何为网站做seo体检,养生网站建设论文bash中 21 的解释 1、首先#xff0c;bash中0#xff0c;1#xff0c;2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO#xff0c;即标准输入#xff08;一般是键盘#xff09;#xff0c;标准输出#xff08;一般是显示屏#xff0c;准…bash中 21 的解释 1、首先bash中012三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO即标准输入一般是键盘标准输出一般是显示屏准确的说是用户终端控制台标准错误出错信息输出。 2、输入输出可以重定向所谓重定向输入就是在命令中指定具体的输入来源譬如 cat test.c 将test.c重定向为cat命令的输入源。输出重定向是指定具体的输出目标以替换默认的标准输出譬如ls 1.txt将ls的结果从标准输出重定向为1.txt文本。有时候会看到如 ls 1.txt这类的写法 和 的区别在于 用于新建而用于追加。即ls 1.txt会新建一个1.txt文件并且将ls的内容输出到新建的1.txt中而ls 1.txt则用在1.txt已经存在而我们只是想将ls的内容追加到1.txt文本中的时候。 3、默认输入只有一个0STDIN_FILENO而默认输出有两个标准输出1 STDOUT_FILENO标准错误2 STDERR_FILENO。因此默认情况下shell输出的错误信息会被输出到2而普通输出信息会输出到1。但是某些情况下我们希望在一个终端下看到所有的信息包括标准输出信息和错误信息要怎么办呢 对了你可以使用我们上面讲到的输出重定向。思路有了怎么写呢 非常直观的想法就是21将2重定向到1嘛行不行呢试一试就知道了。我们进行以下测试步骤 1mkdir test cd test ; 创建test文件夹并进入test目录 2touch a.txt b.c c ; 创建a.txt b.c c 三个文件 3ls 1 ; 按我们的猜测这句应该是将ls的结果重定向到标准输出因此效果和直接ls应该一样。但是实际这句执行后标准输出中并没有任何信息。 4ls ; 执行3之后再次ls则会看到test文件夹中多了一个文件1 5cat 1 ; 查看文件1的内容实际结果为1 a.txt b.c c 可见步骤3中 ls 1并不是将ls的结果重定向为标准输出而是将结果重定向到了一个文件1中。即1在此处不被解释为STDOUT_FILENO而是文件1。 4、到了此时你应该也能猜到21的用意了。不错21就是用来将标准错误2重定向到标准输出1中的。此处1前面的就是为了让bash将1解释成标准输出而不是文件1。至于最后一个则是让bash在后台执行。 1、查看主机网卡流量 复制代码代码如下: #!/bin/bash#network#Mike.Xuwhile : ; do timedate %m-%d %k:%M daydate %m-%d rx_beforeifconfig eth0|sed -n 8p|awk {print $2}|cut -c7- tx_beforeifconfig eth0|sed -n 8p|awk {print $6}|cut -c7- sleep 2 rx_afterifconfig eth0|sed -n 8p|awk {print $2}|cut -c7- tx_afterifconfig eth0|sed -n 8p|awk {print $6}|cut -c7- rx_result$[(rx_after-rx_before)/256] tx_result$[(tx_after-tx_before)/256] echo $time Now_In_Speed: $rx_resultkbps Now_OUt_Speed: $tx_resultkbps sleep 2done 2、系统状况监控 复制代码代码如下: #!/bin/sh#systemstat.sh#Mike.XuIP192.168.1.227top -n 2| grep Cpu ./temp/cpu.txtfree -m | grep Mem ./temp/mem.txtdf -k | grep sda1 ./temp/drive_sda1.txt#df -k | grep sda2 ./temp/drive_sda2.txtdf -k | grep /mnt/storage_0 ./temp/mnt_storage_0.txtdf -k | grep /mnt/storage_pic ./temp/mnt_storage_pic.txttimedate %m.%d %k:%Mconnectnetstat -na | grep 219.238.148.30:80 | wc -lecho $time $connect ./temp/connect_count.txt 3、监控主机的磁盘空间,当使用空间超过90就通过发mail来发警告 复制代码代码如下: #!/bin/bash#monitor available disk spaceSPACEdf | sed -n / \ / $ / p | gawk {print $5} | sed s/%//if [ $SPACE -ge 90 ]thenjbxue123163.comfi 4、 监控CPU和内存的使用情况 复制代码代码如下: #!/bin/bash#script to capture system statisticsOUTFILE/home/xu/capstats.csvDATEdate %m/%d/%YTIMEdate %k:%m:%sTIMEOUTuptimeVMOUTvmstat 1 2 USERSecho $TIMEOUT | gawk {print $4} LOADecho $TIMEOUT | gawk {print $9} | sed s/,// FREEecho $VMOUT | sed -n /[0-9]/p | sed -n 2p | gawk {print $4} IDLEecho $VMOUT | sed -n /[0-9]/p | sed -n 2p |gawk {print $15} echo $DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE $OUTFILE 5、全方位监控主机 复制代码代码如下: #!/bin/bash# check_xu.sh# 0 * * * * /home/check_xu.shDATdate %Y%m%dHOURdate %HDIR/home/oslog/host_${DAT}/${HOUR}DELAY60COUNT60# whether the responsible directory existif ! test -d ${DIR}then /bin/mkdir -p ${DIR}fi# general checkexport TERMlinux/usr/bin/top -b -d ${DELAY} -n ${COUNT} ${DIR}/top_${DAT}.log 21 # cpu check/usr/bin/sar -u ${DELAY} ${COUNT} ${DIR}/cpu_${DAT}.log 21 #/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} ${DIR}/cpu_0_${DAT}.log 21 #/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} ${DIR}/cpu_1_${DAT}.log 21 # memory check/usr/bin/vmstat ${DELAY} ${COUNT} ${DIR}/vmstat_${DAT}.log 21 # I/O check/usr/bin/iostat ${DELAY} ${COUNT} ${DIR}/iostat_${DAT}.log 21 # network check/usr/bin/sar -n DEV ${DELAY} ${COUNT} ${DIR}/net_${DAT}.log 21 #/usr/bin/sar -n EDEV ${DELAY} ${COUNT} ${DIR}/net_edev_${DAT}.log 21 放在crontab里每小时自动执行0 * * * * /home/check_xu.sh 这样便会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络IO的统计数据。如果某个时间段产生问题了就可以去看对应的日志信息看看当时的主机性能如何。转载于:https://www.cnblogs.com/wanghuaijun/p/7371951.html