一、複製/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以致少一個空白字符開頭的行的行首加#;linux
[root@localhost ~]# cp -a /etc/rc.d/rc.sysinit /tmp #複製文件到/tmp下
[root@localhost ~]# vim /tmp/rc.sysinit #使用vim打開文件,提示vim命令找不到 -bash: vim: command not found [root@localhost ~]# yum -y install vim #用yum安裝vim程序,完成後,再次使用vim打開 [root@localhost ~]# vim /tmp/rc.sysinit #打開vim編輯器後,使用:進入末行模式,輸入如下命令進行查找替換 :%s/\(^[[:space:]]\+\)/#\1/g 另外,命令也可寫成 :%s/^[[:space:]]\+/#&/g
拓展思路:編程
如何用查找替換命令恢復已經保存的加了#號的內容?原理相同,只是查找命令範圍更換便可,以下:vim
:%s/^#\([[:space:]]\+\)/\1/g
#/etc/rc.d/rc.sysinit只能在CentOS6上找到,CentOS7上面是沒有的,由於CentOS7採用systemd取代CentOS6是SysV init啓動方式,緣由在於SysV init服務啓動慢。centos
先了解一下什麼是rc.sysinitbash
rc.sysinit做用是執行一些重要的系統初始化任務。網絡
在設定了運行等級後,Linux系統執行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它作的工做很是多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啓動swap分區、設定/proc等等。ssh
二、複製/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;編輯器
[root@localhost ~]# cp -a /boot/grub/grub.conf /tmp #複製文件 [root@localhost ~]# vim /tmp/grub.conf #使用vim打開編輯文件 # 打開編輯器後按:進入末行模式,輸入如下命令進行查找替換 :%s/^[[:space:]]\+//g
三、刪除/tmp/rc.sysinit文件中的以#開頭,且後面跟了至少一個空白字符的行行的#和空白字符ide
[root@localhost ~]# vim /tmp/rc.sysinit #使用vim打開編輯文件 # 打開編輯器後按:進入末行模式,輸入如下命令進行查找替換 :%s/^#[[:space:]]\+//g
四、爲/tmp/grub.conf文件中前三行的行首加#號;測試
同上,打開vim編輯進入末行模式後輸入如下命令: :1,3s/*/#&/g
# vim編輯器末行模式,地址定界說明: :start_pos,end_pos # 具體第#行,例如2表示第2行 #,# 從左側#表示行開始,到右側#表示行結尾 #,+# 從左側#表示的行起始,加上右側#表示的行數 . 當前行 $ 最後一行 % 全文,至關於1,$ /pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直至第一次被pat2匹配到的行結尾 #,/pat/ 從第#行開始,到被pat模式匹配到的行 /pat/,$ 從被pat模式匹配到的行開始,到最後一行。
五、將/etc/yum.repos.d/CentOS-Media.repo文件中全部的enabled=0或gpgcheck=0的最後的0修改成1;
進入vim末行編輯模式,分兩次修改,先修改enabled=0,再修改gpgchechk=0的值 :%s@enabled=0@enable=1@g :%s@gpgcheck=0@gpgcheck=1@g
六、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名爲形如etc-201608300202
[root@mylinux ~]# crontab -e 0 */4 * * * /usr/bin/cp -r /etc/ /backup/etc-`date +%Y%m%d%H%M`
時間表示法: (1) 特定值; 給定時間點有效取值範圍內的值; (2) * 給定時間點上有效取值範圍內的全部值;表示「每...」; (3) 離散取值:, #,#,# (4) 連續取值:- #-# (5) 在指定時間範圍上,定義步長: /#: #即爲步長
七、每週2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20160830
# 建立文件夾: [root@mylinux ~]# mkdir -pv /backup/messages_logs mkdir: created directory ‘/backup’ mkdir: created directory ‘/backup/messages_logs’ # 使用crontab命令建立任務,cp命令進行備份 [root@mylinux ~]# crontab -e 0 0 * * 2,4,6 cp /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`
八、天天每兩小時取當前系統/proc/meminfo文件中的全部以S開頭的信息至/stats/memory.txt文件中
# 建立所需的文件夾及文件 [root@mylinux ~]# mkdir /stats/ [root@mylinux ~]# touch /stats/memory.txt [root@mylinux ~]# crontab -e 0 */2 * * * /usr/bin/egrep '^S' /proc/meminfo >> /stats/memory.txt
九、工做日的工做時間內,每兩小時執行一次echo "howdy"
[root@localhost ~]# crontab -e 0 */2 * * 1-5 /usr/bin/echo "howdy"
腳本編程練習
十、建立目錄/tmp/testdir-當前日期時間;
# 編輯腳本,並保存 [root@mylinux tmp]# vim datedir.sh #!/bin/bash mkdir -pv /tmp/testdir-$(date +%Y%m%d%H%M)
# 修改腳本權限爲可執行 [root@mylinux tmp]# chmod o+x datedir.sh
# 執行腳本建立目錄 [root@mylinux tmp]# ./datedir.sh mkdir: created directory ‘/tmp/testdir-201609270041’
驗證腳本結果: [root@mylinux tmp]# ls -l drwxr-xr-x. 2 root root 6 Sep 27 00:41 testdir-201609270041
十一、在此目錄建立100個空文件:file1-file100
# 編輯腳本保存 [root@mylinux tmp]# vim create_empty_file.sh #!/bin/bash #create_empty_file for i in {1..100}; do touch /tmp/testdir-201609270041/file$i done # 授予執行權限: [root@mylinux tmp]# chmod o+x create_empty_file.sh
# 運行腳本 [root@mylinux tmp]# ./create_empty_file.sh # 查看腳本運行結果 [root@mylinux tmp]# ls ./testdir-201609270041/ file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
十二、顯示/etc/passwd文件中位於第偶數行的用戶的用戶名;
# 建立腳本並保存 [root@mylinux tmp]# vim display_username.sh #!/bin/bash # 顯示/etc/passwd文件中位於偶數行的用戶的用戶名 sed -n 'n;p' /etc/passwd |cut -d: -f1
# 對腳本授予執行權限x並運行 [root@mylinux tmp]# chmod o+x display_username.sh [root@mylinux tmp]# ./display_username.sh bin adm sync halt operator ftp avahi-autoipd systemd-network polkitd tss sshd centos acc archlinux
1三、建立10用戶user10-user19;密碼同用戶名;
# 建立腳本 [root@mylinux tmp]# vim adduser.sh #!/bin/bash # create user10-user19,these passwd the same as username for i in {10..19};do useradd user$i echo "user$i" | passwd--stdin user$i done
# 授予腳本執行權限 [root@mylinux tmp]# chmod o+x adduser.sh # 運行腳本 [root@mylinux tmp]# ./adduser.sh Changing password for user user10. passwd: all authentication tokens updated successfully. Changing password for user user11. passwd: all authentication tokens updated successfully. Changing password for user user12. passwd: all authentication tokens updated successfully. Changing password for user user13. passwd: all authentication tokens updated successfully. Changing password for user user14. passwd: all authentication tokens updated successfully. Changing password for user user15. passwd: all authentication tokens updated successfully. Changing password for user user16. passwd: all authentication tokens updated successfully. Changing password for user user17. passwd: all authentication tokens updated successfully. Changing password for user user18. passwd: all authentication tokens updated successfully. Changing password for user user19. passwd: all authentication tokens updated successfully. # 驗證結果方式,使用新建立的user10-19進行登陸,測試密碼是否與用戶名一致
1四、在/tmp/建立10個空文件file10-file19;
# 建立腳本 [root@mylinux tmp]# vim createfile.sh #!/bin/bash #create empty file10-file19 for i in {10..19};do touch /tmp/file$i done #對腳本授執行權限x [root@mylinux tmp]# chmod o+x createfile.sh #執行並顯示結果 [root@mylinux tmp]# ./createfile.sh [root@mylinux tmp]# ls adduser.sh display_username.sh file13 file17 fstab.2 create_empty_file.sh file10 file14 file18 meminfo.txt createfile.sh file11 file15 file19 profile datedir.sh file12 file16 fstab testdir-201609270041
1五、把file10的屬主和屬組改成user10,依次類推。
# 建立腳本 [root@mylinux tmp]# vim chown.sh #!/bin/bash for i in {10..19};do chown user$i:user$i /tmp/file$i done # 執行腳本命令 [root@mylinux tmp]# chmod o+x chown.sh [root@mylinux tmp]# ./chown.sh [root@mylinux tmp]# ll ...(中間省略)... -rw-r--r--. 1 user10 user10 0 Sep 28 00:22 file10 -rw-r--r--. 1 user11 user11 0 Sep 28 00:22 file11 -rw-r--r--. 1 user12 user12 0 Sep 28 00:22 file12 -rw-r--r--. 1 user13 user13 0 Sep 28 00:22 file13 -rw-r--r--. 1 user14 user14 0 Sep 28 00:22 file14 -rw-r--r--. 1 user15 user15 0 Sep 28 00:22 file15 -rw-r--r--. 1 user16 user16 0 Sep 28 00:22 file16 -rw-r--r--. 1 user17 user17 0 Sep 28 00:22 file17 -rw-r--r--. 1 user18 user18 0 Sep 28 00:22 file18 -rw-r--r--. 1 user19 user19 0 Sep 28 00:22 file19 drwxr-xr-x. 2 root root 4096 Sep 27 23:35 testdir-201609270041