1、複製/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
cp /etc/rc.d/rc.sysinit /tmp sed -i 's/\(^[[:space:]]\)/#\1/g' /tmp/rc.sysinit
2、複製/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
sed -i 's/^[[:space:]]\+//g' /tmp/grub.conf
3、刪除/tmp/rc.sysinit文件中的以#開頭,且後面跟了至少一個空白字符的行行的#和空白字符
sed -i 's/^#[[:space:]]\+//g' /tmp/rc.sysinit
4、爲/tmp/grub.conf文件中前三行的行首加#號;
sed -i '1,3s/\(^.\)/#\1/g' /tmp/rc.sysinit
5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最後的0修改爲1;
sed 's/enabled=0/enabled=1/g;s/gpgcheck=1/gpgcheck=2/g;' /etc/yum.repos.d/CentOS-Media.repo
6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名爲形如etc-201608300202
cat /home/backup/shell/crond_shell.sh #!/bin/bash #定義變量 Datetime=`date +\%Y\%m\%d\%H\%M` Baname=etc- Quanlj=$Baname$Datetime.tar.gz #打包 tar czf $Quanlj /etc >/dev/null mv $Quanlj /backup crontab -e 00 */4 * * * sh /home/backup/shell/crond_shell.sh >/dev/null
7、每週2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20160830
* * * * 2,4,6 /bin/cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`
注:這裏的變量名爲什麼要寫絕對路徑呢,因爲在定時任務執行的時候,你會發現,找不到這個命令的路徑,但是手動執行又有,這點我也沒明白爲什麼會這樣。
8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
grep -E "^S" /proc/meminfo >>/stats/memory.txt
9、工作日的工作時間內,每兩小時執行一次echo "howdy"
腳本編程練習
例子1: cat /home/backup/shell/echo_shell.sh #!/bin/bash echo "howdy" crontab -e * */2 * * 1-5 sh /home/backup/shell/crond_shell.sh 例子2: 用最簡單的方法如下 crontab -e * */2 * * 1-5 /bin/echo "howdy"
10、創建目錄/tmp/testdir-當前日期時間;
mkdir /tmp/testdir-date +%F-%T
11、在此目錄創建100個空文件:file1-file100
seq -f 'file%01g' 1 100 | xargs touch
12、顯示/etc/passw d文件中位於第偶數行的用戶的用戶名;
sed -n 'n;p' /etc/passwd|cut -d: -f1
13、創建10用戶user10-user19;密碼同用戶名;
#!/bin/bash for i in $(seq -w 10) do useradd -s /bin/bash user10$i echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin user$i done
14、在/tmp/創建10個空文件file10-file19;
for i in `seq 10 19`;do touch /tmp/file$i;done;
15、把file10的屬主和屬組改爲user10,依次類推。
for in in `seq 10 19`;do chown user$i.user$i /tmp/file$i;done;
本週總結:
做完上面的作業發現,熟悉用過的一些命令,也跟着出現了,比如gerp的一些參數,在這裏,也重複利用起來了,下面我對他做個歸檔。
勵志語句:晉升需付出,空手套白狼,好比出門左轉買福利彩。學習還是需要多努力,多堅持,才能走完整個過程。
grep:
一.匹配字符
. 匹配任意單個字符 [ ] 匹配指定範圍內的任意字符 [^] 匹配飛指定範圍內的任意字符 [:alpha:] 字母字符 [:lower:] 小寫字母字符 [:upper:] 大寫字母字符 [:digit:] 數字 [:alnum:] 字母數字字符 [:space:] 空白字符(禁止打印),如回車符、換行符、豎直製表符和換頁符 [:punct:] 標點字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用時一般使用兩個中括號.
二、錨定符
1.^ 錨定行首 grep "^r..t" /etc/passwd 2.$ 錨定行尾 grep "h$" /etc/passwd 3.^$ 錨定空白行 grep "^$" /etc/passwd 4.\< (\b) 錨定詞首 grep "\<r..t" /etc/passwd 5.\> (\b) 錨定詞首 grep "r..t\>" /etc/passwd 示例(容易混淆): 至少包含一個空白字符 grep "[[:space:]]\{1,\}" /etc/passwd 至少包含一個非空白字符 grep "[^[:space:]]\{1,\}" /etc/passwd 沒有一個空白字符 grep -v "[^[:space:]]\{1,\}" /etc/passwd 6.\(\)對字符分組 grep "\(l..e\).*\1r" 示例: grep --color "l\([13]\):\1:.*:\1" /etc/inittab
三、匹配次數
* 匹配前面的字符任一次 .* 匹配任意長度的任意字符(注意貪婪模式,比如 grep “r.*t” /etc/passwd ) x\{m,n\} 指定前面的字符至少出現m次,至多出現N次。 x\{m,\} 指定前面的字符至少出現m次 x\{0,n\} 指定前面的字符至多出現N次 x\{m\} 精確匹配m次 ? 匹配其前面的字符0或1次 seq: 用法:seq [選項]... 尾數 或:seq [選項]... 首數 尾數 或:seq [選項]... 首數 增量 尾數 以指定增量從首數開始打印數字到尾數。 -f, --format=格式 使用printf 樣式的浮點格式 -s, --separator=字符串 使用指定字符串分隔數字(默認使用:\n) -w, --equal-width 在列前添加0 使得寬度相同
for:
例子1 for 變量 do 語句 done 例子2 for 變量 in 列表 do 語句 done