馬哥Linux第六週課程做業

一、複製/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

wKioL1fWiBHxsur1AAB_7h-LZWs055.png-wh_50

拓展思路:編程

如何用查找替換命令恢復已經保存的加了#號的內容?原理相同,只是查找命令範圍更換便可,以下: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

wKiom1fWjz6zRV9ZAADSFDsBgQ4938.png-wh_50

三、刪除/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
相關文章
相關標籤/搜索