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 22:16
下一篇 2016-11-01 09:50

相关推荐

  • 十个让你变成糟糕的程序员的行为

    之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。 1) 情绪化的思维 如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你经常可以看到很多很糟糕的程序…

    Linux资讯 2015-04-03
  • Leetcode 编程训练

    Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了…

    Linux干货 2016-08-15
  • Homework Week-14 iptables及tcpwraper访问控制

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; iptables -A INPUT -d 192.168.1.101 -p …

    Linux干货 2016-12-05
  • Homework Week-7 RAID及bash编程

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; fdisk /dev/sda n …

    Linux干货 2016-09-26
  • Linux的终端类型

    一、了解终端   在早期的年代,主机不是很多,都是一系列的大型主机,简单来说就是用户很多,但主机很少,不可能做到人手一台,但可以在主机上连接一个分屏器,在分屏器上可以连接鼠标键盘以及显示器,这些东西是没有计算能力的,仅仅担任输入和输出的工作,运算和处理都是由主机来完成的。   简单来说终端是用户与主机交互,是必然用到的…

    Linux干货 2016-10-14
  • 第六周作业

    vim文本编辑器基本用法     基本模式:         编辑模式,命令模式    输入模式        末行模式:    …

    Linux干货 2016-09-19

评论列表(1条)

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

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