Linux基礎知識—Vim編輯器/crond周期性任務計劃

vim文本編輯

vim是vi文本編輯的增強版本,因其編輯功能強大、且支持各種語言開發環境關鍵字自動增亮功能,也可稱為是開發工具。在Centos7/RHEL7開始,默認將vi定義成vim –color=auto,已經取代了vi的地位。下面總結下關于vim工具的使用

vim有三種模式,每個模式下有其特定的功能;我們可自由在三者之間切換使用:

COMMAND MODE:vim的默認模式(初始模式)

          可以使用方向鍵來移動光標、可以刪除字符或者整行刪除、可以復制粘貼等操作

INSERT MODE:vim的編輯模式

          當你按下【a,i,o,A,I,O,R,r】便可從初始的命令模式進入編輯模式,再按下【esc】按鍵時,便可從輸入模式轉換到命令模式

COMMAND-LINE MODE:末行模式

          可通過【: / ?】三個符合從命令模式進入末行編輯模式,此模式下可查詢、替換、讀取其他文件、存盤、退出、界面設置等操作;功能十分強大

Linux基礎知識---Vim編輯器/crond周期性任務計劃

vim相關命令
zz

       類似于:wq 保存退出

光標跳轉

w:下一個詞首
e:下一個詞尾
b:當前或者前一個詞首

行首行尾跳轉

^:跳轉至行首第一個非空白字符
0:跳轉至行首
$:跳轉至行尾

行間跳轉

nG:跳轉至第n行
1G、gg:跳轉至第一行行首
G:跳轉至末行行首

句間跳轉

(:上一句
):下一句

段間跳轉

{:上一段
}:下一段

翻屏

ctrl+f:向文件尾部翻一頁
ctrl+b:向文件首部翻一頁
ctrl+d:向文件尾部翻半頁
ctrl+u:向文件首部翻半頁

編輯命令

x:刪除光標所在位置字符
nyy:復制光標所在往下n行
p:粘貼復制的內容
d:刪除命令,可結合光標跳轉字符,實現范圍刪除
dd:刪除光標所在行
ndd:光標所在行往下n行刪除
u:undo,即撤銷操作的意思,可緩存50條記錄
ctrl+r:撤銷之前的撤銷操作

光標位置定界

:start_pos[,end_pos]    
n:  特定的第n行
.:  表示當前行,可+可-
$:  表示最后一行
%:  表示全部內容
m,n:    表示從m行到n行
m,+n:   表示從m行開始的n行內

查找、替換

s/要查找的內容/要替換的內容/修飾符
其中:要查找的內容可使用正則表達式
         要替換的內容不能使用正則表達式,但是可以引用
         修飾符:i  忽略大小寫
                g   全局替換
:%s/匹配字符/替換字符/g

平時在寫程序時經常會遇到大小寫轉換的問題,vim中提供了很多非常方便的大小寫轉換命令,可以快速的進行字母、單詞、任意行的大小寫轉換,可以和vim的光標移動指令組合使用。

~ 將光標下的字母改變大小寫

3~ 將光標位置開始的3個字母改變其大小寫

g~~ 改變當前行字母的大小寫

U 將可視模式下選擇的字母全改成大寫字母

u 將可視模式下選擇的字母全改成小寫

gUU 將當前行的字母改成大寫

3gUU 將從光標開始到下面3行字母改成大寫

guu 將當前行的字母全改成小寫

gUw 將光標下的單詞改成大寫。

guw 將光標下的單詞改成小寫。

更多技巧可以查看文檔

任務計劃

bash shell極大的方便了系統管理員的工作,可是有些工作呢不是任何時候都可以人為操作的,根據工作需要,往往有很多工作需要定時定點的去執行;因此Linux為了方便系統管理工作,加入了周期性任務計劃管理,Linux下的任務調度分為兩類,系統任務調度和用戶任務調度。:

crontab用戶任務調度

maintains crontab files for individual users這里是一個命令,/usr/bin/crontab;所有的用戶crontab文件保存的地方在/var/spool/cron/$USERNAME,/etc/cron.allow或者/etc/cron.deny可限制哪些用戶可以使用crontab哪些用戶不可以使用crontab,cron.allow優先級比cron.deny高,只需要將用戶名編輯入其中一個即可
【SYNOPIS】
    crontab [-u user] file
       crontab [-u user] [-l | -r | -e] [-i] [-s]
       crontab -n [ hostname ]
       crontab -c
【OPTIONS】
    -u  --user  指定用戶crontab任務
    -l  列出任務計劃
    -r  刪除可用的任務計劃
    -e  編輯任務計劃,類似vi,編輯文件后:wq保存即可
    -i  與-r同用,交互式刪除任務計劃
    -n  --host  指定用戶執行任務計劃

其格式如下:
        # For details see man 4 crontabs
        # 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
        # |  |   |   |    |
        # *  *   *   *    *      command to be executed 
在以上各個字段中,還可以使用以下特殊字符:
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。   
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”    
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”   
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。

/etc/crontab

這是系統級別的任務計劃管理文檔,可通過直接編輯/etc/crontab文件實現,其格式跟用戶crontab編輯格式一樣;該進程默認啟動;
服務狀態:#service crond status 或者 systemctl status crond.service
啟動服務:#service crond start 或者 systemctl start crond.service
停止服務:#service crond stop 或者 systemctl stop crond.service

vim練習總結:

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;

:%s/^[[:blank:]]\+.*/\0#/g

2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中行首的空白字符

:%s/^[[:space:]]\+//g

3、刪除/tmp/rc.sysinit文件中以#開頭且后面跟了至少一個空白字符的行的#和空白字符

:%s/^#[[:blank:]]\+//g

4、為/tmp/grub.conf文件中前三行的行首加#號

:1,3s/^/\0#/g

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

* */4 * * * /usr/bin/cp /etc /backup/etc-$(date +%Y%m%d%h%M)/

7、每周2、4、6備份/var/log/messages文件至/backup/messages_logs目錄中,保存的文件名形如messages-20150402

* * * * 2,4,6   /usr/bin/cp /var/log/messages /backupmessages_logs/messages-$(date +%Y%m%d)

8、每天每2小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

* */2 * * * /usr/bin/grep -E "S.*" /proc/meminfo>>/stats/memory.txt

9、工作日的工作時間內,每2個小時執行一次echo "howdy"

* 9-18/2 * * 1-5        /usr/bin/echo "howdy"

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間

    #!/bin/bash
    if [ -d /tmp/testdir-$(date +%Y%m%d) ]
              then
             echo "the dirctory is exist!"
    else
             mkdir -p /tmp/testdir-$(date +%Y%m%d) &&echo "create the dirctory successful!" 
    fi

11、在此目錄創建100個空文件:file1-file100

#!/bin/bash
    for ((i = 1; i<=100; i++))
do
        touch /tmp/files/file$i;
done
echo "create 100 files successful!"

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名

#!/bin/bash

i=0
for username in `cat /etc/passwd|cut -d: -f1`
do
        i=$(($i+1))
        [ $((i%2)) -eq 0 ] && echo $username;
done

13、創建10用戶user10-user19,密碼同用戶名

#!/bin/bash
for (( i=10;i<20;i++ ))
    do
    id user$i>/dev/null 2>&1;
    if [ $? == 0 ];then
            echo "the user$i is exist!"
    else
            useradd user$i && echo "user$i"|passwd --stdin user$i>>/dev/null 2>&1;
            echo "create user$i successful!"
    fi

done

14、在/tmp創建10個空文件file10-file19;

#!/bin/bash
#   
for (( i=10; i<20; i++ ))
    do
        if [ -f /tmp/file$i ];then
           echo "the file$i is exist."
        else
           touch /tmp/file$i && echo "create file$i successful!"
        fi
done

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

(0)
396064847396064847
上一篇 2016-10-31 22:16
下一篇 2016-11-01 09:50

相關推薦

  • 創建一個簡易的Linux

      目標:   為CentOS 6添加一塊新硬件,提供兩個主分區;    (1) 為硬盤新建兩個主分區;并為其安裝grub;    (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個 分區提供rootfs;    (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;    (4) 為grub提供配置文件;    …

    Linux干貨 2016-12-30
  • 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可 who |cut -d ' ' -f1 |sort|uniq 2、取出最后登錄到當前系統的用戶的相關信息 last|head -1 3、取出當前系統上被用戶當作其默認shell的最…

    Linux干貨 2016-12-26
  • 高可用集群基本概念與heartbeat文本配置接口

    一、高可用集群基本概念:     什么是高可用集群:          所謂高可用集群,就是在出現故障時,可以把業務自動轉移到其他主機上并讓服務正常運行的集群構架     高可用集群的構架層…

    Linux干貨 2016-01-13
  • 閑玩Xen

    簡述理論 虛擬化的實現 模擬技術:模擬計算機的主要硬件硬件并協調工作,但是效率很低下,所以不常用 完全虛擬化:針對cpu的虛擬來分為,基于BT技術(Guset的特權指令在ring1,Host的特權指令在ring0,Guest的特權指令由Host的ring0來參與邊翻譯邊執行)的完全虛擬化,基于HVM(硬件輔助,Guest的特權指令在ring0,Host的特權…

    Linux干貨 2016-09-26
  • 內核編譯實際效果演示

    內核編譯實際操作效果演示     環境:CentOS7.2,自帶內核版本為3.10.0-327.el7.x86_64,下載3.18.41版本進行編譯     步驟1:確保開發工具包組已安裝     [root@localhost …

    Linux干貨 2016-09-13
  • vim編輯器使用詳解

    1.vi (virtual interface)文本編輯器     文本編輯種類:     行編輯器:sed     全屏編輯器:nano vi     vim vi-improved  &…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-01 22:54

    完成的非常好,6、8、9題需要精確到分鐘,7題需要精確到分鐘、小時哈,加油!

欧美性久久久久