【N25第六周作業】VIM、crontab、簡單腳本

請詳細總結vim編輯器的使用并完成以下練習題
第二周有寫過vim的用法,請查看連接:

周期性任務計劃:cron
	服務程序:
		cronie:主程序包,提供了crond守護進程及相關輔助工具;
			
	確保crond守護進程(daemon)處于運行狀態:
		CentOS 7:
			systemctl  status  crond.service
				Active: active (running) ... ...
					
		CentOS 6:
			service  crond  status
				... is running.
					
	向crond提交作業的方式不同于at,它需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件;要使用crontab命令;
		cron任務分為兩類:
			系統cron任務:主要用于實現系統自身的維護;
				手動編輯:/etc/crontab文件
			用戶cron任務:
				命令:crontab命令
			
		系統cron的配置格式:/etc/crontab
			SHELL=/bin/bash
			PATH=/sbin:/bin:/usr/sbin:/usr/bin
			MAILTO=root

		第1列   第2列    3      4       5    6    7
                第1列表示分鐘1~59 每分鐘用*或者 */1表示
                第2列表示小時1~23(0表示0點)
                第3列表示日期1~31
                第4列表示月份1~12
                第5列標識號星期0~6(0表示星期天)
                第6列要運行的命令的用戶
		第7列要運行的命令		
		注意:
		(1) 每一行定義一個周期性任務,共7個字段;
			*  *  *  *  * : 定義周期性時間
			user-name : 運行任務的用戶身份
			command to be executed:任務
		(2) 此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
		(3) 執行結果郵件發送給MAILTO指定的用戶
					
	用戶cron的配置格式:/var/spool/cron/USERNAME
		SHELL=/bin/bash
		PATH=/sbin:/bin:/usr/sbin:/usr/bin
		MAILTO=root	
			
	時間表示法:
		(1) 特定值;
			給定時間點有效取值范圍內的值;
			注意:day of week和day of month一般不同時使用;
		(2) *
			給定時間點上有效取值范圍內的所有值;表“每..”
		(3) 離散取值:,
			在時間點上使用逗號分隔的多個值; 
				#,#,#
		(4) 連續取值:-
			在時間點上使用-連接開頭和結束
				#-#
		(5) 在指定時間點上,定義步長: 
			/#:#即步長;
					
		注意:
		(1) 指定的時間點不能被步長整除時,其意義將不復存在;
		(2) 最小時間單位為“分鐘”,想完成“秒”級任務,得需要額外借助于其它機制;
		    定義成每分鐘任務:而在利用腳本實現在每分鐘之內,循環執行多次;
					
		示例:
			(1) 3 * * * *:每小時執行一次;每小時的第3分鐘;
			(2) 3 4 * * 5:每周執行一次;每周5的4點3分;
			(3) 5 6 7 * *:每月執行一次;每月的7號的6點5分;
			(4) 7 8 9 10 *:每年執行一次;每年的10月9號8點7分;
			(5) 9 8 * * 3,7:每周三和周日,8點9分;
			(6) 0 8,20 * * 3,7:
			(7) 0 9-18 * * 1-5:
			(8) */5 * * * *:每5分鐘執行一次某任務;
			(9) */7
		       (10)0 0 * * *  /usr/sbin/ntpdate -u pool.ntp.org >/dev/null 2>&1			
crontab命令:
	crontab [-u user] [-l | -r | -e] [-i] 
		-e:編輯任務;
		-l:列出所有任務;
		-r:移除所有任務;即刪除/var/spool/cron/USERNAME文件;
		-i:在使用-r選項移除所有任務時提示用戶確認;
		-u user:root用戶可為指定用戶管理cron任務;					
									
		注意:運行結果以郵件通知給當前用戶;如果拒絕接收郵件:
			(1) COMMAND > /dev/null
			(2) COMMAND &> /dev/null
				
		注意:定義COMMAND時,如果命令需要用到%,需要對其轉義;但放置于單引號中的%不用轉義亦可;

    
at命令:
	at  [OPTION]... TIME
		
		TIME:
			HH:MM [YYYY-mm-dd]
			noon,midnight, teatime
			tomorrow
			now+#
				UNIT:minutes, hours, days, OR weeks
					
		at的作業有隊列,用單個字母表示,默認都使用a隊列;
		
	常用選項:
	-l:查看作業隊列,相當于atq
	-f /PATH/FROM/SOMEFILE:從指定文件中讀取作業任務,而不用再交互式輸入;
	-d:刪除指定的作業,相當于atrm;
	-c:查看指定作業的具體內容;
	-q QUEUE:指明隊列;
				
	注意:作業執行結果是以郵件發送給提交作業的用戶;
--------------------------------------------------------------------------
1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
:%s/^[[:space:]]\{1,\}.*/#&/g

2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]]\{1,\}//g

3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符
:%s/^#[[:space:]]\{1,\}//g

4、為/tmp/grub.conf文件中前三行的行首加#號;
:1,3s/^/#&/

5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
:%s@\(enabled\|gpgcheck\)=0@\1=1@g

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
0 */4 * * * /usr/bin/cp -r /etc/   /backup/etc-`date +%Y%m%d%H%M%S`/  >dev/null 2>&1

7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
0 0 * * 2,4,6 /usr/bin/cp -r /var/log/messages  /backup/messages_logs/messages-`date +%Y%m%d`  >/dev/null  2>&1

8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
0 */2 * * * /usr/bin/grep '^S' /proc/meminfo  >> /stats/memory.txt  >/dev/null  2>&1

9、工作日的工作時間內,每兩小時執行一次echo "howdy"
0 9-18/2 * * echo "howdy" 2>&1

腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間; 
#!/bin/bash
#
DATE=`date +%Y%m%d%H%M%S`
if [ -d /tmp/testdir-$DATE ];then
	echo "testdir-$DATE is exist!"
	exit 2
else
	mkdir /tmp/testdir-$DATE
	if [ -d /tmp/testdir-$DATE ];then
		echo "create testdir-$DATE success!"
	else
		echo "create failure testdir-$DATE!"
	fi
fi

11、在此目錄創建100個空文件:file1-file100
#!/bin/bash
#
for i in {1..100};do
	if [ -e /tmp/file$i ];then
		echo "/tmp/file$i exist"
	else
		touch /tmp/file$i
	fi
done

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
#!/bin/bash
#
FILE=/etc/passwd
SUM=`wc -l $FILE|cut -d' ' -f1`、
for i in $(seq 2 2 $SUM);do
	NAME=`head -n$i $FILE|tail -1|cut -d: -f1`
	echo "$NAME   "
done

13、創建10用戶user10-user19;密碼同用戶名;
#!/bin/bash
#

for i in {10..19};do
	if id user$i &>/dev/null;then
		echo "user$i exist,adduser failure"
	else
		useradd user$i
		echo "user$i"|passwd --stdin user$i >/dev/null
		echo "user$i add success"
	fi
done

14、在/tmp/創建10個空文件file10-file19; 
#!/bin/bash
#
for ((i=10;i<=19;i++));do
	if [ -e /tmp/file$i ];then
		echo "/tmp/file$i exist"
	else
		touch /tmp/file$i
	fi
done
15、把file10的屬主和屬組改為user10,依次類推。
#!/bin/bash
#

for ((i=10;i<=19;i++));do
	chown user$i:user$i /tmp/file$i
done


原創文章,作者:sheng,如若轉載,請注明出處:http://www.www58058.com/65075

(0)
shengsheng
上一篇 2016-12-27
下一篇 2016-12-27

相關推薦

  • Centos Linux基礎入門知識類

    Centos Linux基礎入門知識類 ?1.1Linux終端介紹 ?1.2基本命令的使用:ls、pwd、cd。 ?1.3 查看系統和BIOS硬件時間。 ?1.4 Linux如何獲得幫助,Linux關機命令:shutdow、init等。 ?1.5 YUM本地源配置與開機自動掛載光盤 前言: 很多學習Linux的同學或多…

    Linux干貨 2017-03-26
  • N22-℡浮生.若夢 ╮第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash ## declare -i log_user declare -i notlog_user for i …

    Linux干貨 2016-12-12
  • 馬哥教育網絡班22期+第13周作業

    week13 1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為…

    Linux干貨 2016-11-21
  • VMware虛擬機設置網絡(包含簡單安裝)

    1.下載VMware虛擬機 2.創建一個虛擬機,選擇下載好的linux系統,我這里選擇的是CentOS版本,之后一直按著步驟設置一般都選擇默認就好                               &…

    2017-09-02
  • CollabNetSubversionEdge服務搭建

    準備目錄并設置權限 [root@localhost ~]# mkdir /var/svn [root@localhost ~]# chown bohui:bohui /var/svn/ [root@localhost ~]# chmod 700 /v…

    Linux干貨 2015-10-18
  • 網絡知識點

    1. 實現異地搭建局域網的方法1>. 讓運行商拉專線,這是相當昂貴的。2>.  VPN (Virtual PrivateNetwork)  虛擬專用網絡 2. VPN的隧道協議主要有三種:PPTP、L2TP和IPSec。其中PPTP和L2TP協議工作在OSI模型的第二層,又稱為二層隧道協議;IPSec是第三層隧道協議。 2. …

    Linux干貨 2016-09-01
欧美性久久久久