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.178linux.com/56535

(0)
396064847396064847
上一篇 2016-10-31
下一篇 2016-11-01

相关推荐

  • 文本处理三剑客–sed使用详解

    处理文本的工具sed Stream EDitor     行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。…

    Linux干货 2017-05-21
  • 软件包管理

    一、软件运行环境     API: Application Programming Interface         POSIX: Portable OS     程序源代码 –>…

    Linux干货 2016-08-22
  • linux下NTP服务

    linnux NTP

    2017-10-18
  • 简述开源协议

    简述开源协议 现在一说到智能手机,相信很容易就会想到苹果和安卓。安卓搭载的Android是一种基于Linux的自由及开源的操作系统,苹果手机搭载OS X是苹果公司为Mac系列产品开发的专属操作系统。    安卓手机凭借其开源的特性达到与苹果系统分庭伉礼的地位,又凭借其开源的价格优势,牢牢把控手机设备的中低端市场,其市场占有率远远…

    Linux干货 2017-03-26

评论列表(1条)

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

    完成的非常好,6、8、9题需要精确到分钟,7题需要精确到分钟、小时哈,加油!