一、複製/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以致少一個空白字符開頭的行的行首加#;編程
vim中的末行模式:vim
內建的命令行接口bash
(1) 地址定界ssh
:start_pos,end_poside
#:具體地#行,例如:2表示第2行spa
#,#:從左側#表示行起始,到右側#表示行結尾命令行
#,+#:1,+3從左側#表示的行起始,加上到右側#表示的行數接口
.:當前行crontab
$:最後一行ip
.,$-1
%:全文,至關於1,$
/pat1/,/pat2/:表示第一次配pat1模式匹配到的行開始,一直到第二次被pat2匹配到的行結束
#,/pat/
/pat/,$
使用方式:
後跟一個編輯命令
d
y
w /PATA/to/someFile : 將範圍內的行另存爲
r /PATA/to/someFile : 在指定文件插入指定文件的內容
(2)查找
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
(3)查找並替換
s:在末行模式下使用
s/要查找的內容/替換爲的內容/修飾符
要查找的內容,可以使用模式
替換的內容:不能使用模式,但能夠使用\1,....等後向引用;還能夠使用「&」引用前面查找時查找到的整個內容
修飾符:
i:忽略大小寫
g:全局替換,默認狀況下,每一行只替換第一次出現
查找替換中的分隔符/可替換其它字符,例如
s@@@
s###
:%s/^[[:space:]]/#&/
二、複製/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]]//g
三、刪除/tmp/rc.sysinit文件中的以#開頭,且後面跟了至少一個空白字符的行行的#和空白字符
:%s/^[#][[:space:]]\+//
四、爲/tmp/grub.conf文件中前三行的行首加#號;
:1,3s/\(.*\)/#\1/g
五、將/etc/yum.repos.d/CentOS-Media.repo文件中全部的enabled=0或gpgcheck=0的最後的0修改成1;
:s/enabled=0/enabled=1/g :s/gpgcheck=0/gpgcheck=1/g
六、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名爲形如etc-201608300202
系統cron:
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
時間表示法:
(1) 特定值:
給定時間點有效取值範圍內的值
(2) *
給定時間點上有效範圍內的全部值
表示「每...」
(3) 給定離散取值;,
#,#,#
(4) 連續取值:-
#-#
(5) 在指定時間範圍上,定義步長:
/#: #即步長
20-50/3:20到50分鐘內每三分鐘執行一次
例如:每3小時echo命令一次
0 */3 * * * gentoo /bin/echo "howdy"
用戶cron:
crontab命令定義,每一個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME
crontab命令的用法
crontab [-u user] [-l | -r | -e] [-i] [-s]
-e:編輯任務
-l: 列出全部任務
-r:移除全部任務
-i:同-r一同使用,以交互模式讓用戶有選擇第引出指定用戶
-u user:僅root可運行,代爲爲指定用戶管理cron任務;
0 */4 * * * /usr/bin/cp -R /etc /tmp/backup/etc-`date +%Y%m%d%H%M`
七、每週2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20160830
* 00 * * 2,4,6 /usr/bin/cp -a /var/log/messages /backup/messages-`date +%Y%m%d%H`
八、天天每兩小時取當前系統/proc/meminfo文件中的全部以S開頭的信息至/stats/memory.txt文件中
0 */2 * * * /usr/bin/grep -E "^[s|S]" /proc/meminfo >> /tmp/stats/memory.txt
九、工做日的工做時間內,每兩小時執行一次echo "howdy"
0 */2 * * 1-5 /usr/bin/echo "howdy"
腳本編程練習
十、建立目錄/tmp/testdir-當前日期時間;
[root@jun-shao ~]# mkdir /tmp/testdir-`date +%Y%m%d%H` [root@jun-shao ~]# ll -d /tmp/testdir-2016091204/ drwxr-xr-x. 2 root root 4096 9月 12 04:45 /tmp/testdir-2016091204/
十一、在此目錄建立100個空文件:file1-file100
[root@jun-shao tmp]# cat newfile.sh #!/bin/bash for i in {1..100};do touch /tmp/testdir-2016091204/file$i done
十二、顯示/etc/passw d文件中位於第偶數行的用戶的用戶名;
[root@jun-shao ~]# cat /tmp/user.sh #!/bin/bash a=`wc -l /etc/passwd | cut -d" " -f1` for i in $( seq 1 $a);do let v=$i%2 if [ $v == 0 ];then echo `head -n $i /etc/passwd | tail -n 1 | cut -d":" -f1` fi done [root@jun-shao tmp]# ./user.sh bin adm sync halt uucp games ftp dbus rpc avahi-autoipd abrt nfsnobody ntp saslauth gdm sshd jun_shao
1三、建立10用戶user10-user19;密碼同用戶名;
#!/bin/bash for i in {10..19};do useradd user$i echo "user$i"| passwd --stdin user$i done
1四、在/tmp/建立10個空文件file10-file19;
#!/bin/bash for i in {10..19};do touch /tmp/file$i done
1五、把file10的屬主和屬組改成user10,依次類推。
#!/bin/bash for i in {10..19};do chown user$i:user$i file$i done