Linux第六次做業

一、複製/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
相關文章
相關標籤/搜索