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

相关推荐

  • 任务计划使用方法

    概述     任务计划其实就是针对未来的某一刻或者是某一周期内设置要执行的工作;     任务计划分为两种:         1、一次性任务:在指定的未来的某个时间点仅执行一次任务;  &n…

    Linux干货 2015-03-26
  • openssl总结及私有CA的搭建

    一、前言 什么是openssl?讲openssl之前我们先了解一下什么是ssl?ssl是secure socket layer的简称,其使用对称加密,非对称加密(公钥加密解密),单向加密解密结合证书实现数据传输安全,openssl默认是在系统安装时就已经安装上去的。随着互联网的迅速发展,网络通信已经成为传递信息的主要途径。而通信时的数据传输大部分都是明文传输…

    Linux干货 2016-01-05
  • Cacti整合Zabbix监控

    前言: 由于公司现在很多业务都是使用cacti进行监控流量的,并且还有一些使用zabbix监控的项目,正好又有一个项目需要搭建Cacti+Zabbix进行综合监控,搭建完毕之后发现,Cacti较之以前有了不小的改进,所以就来写一写Cacti和Zabbix监控整合的文章,顺便说一下Cacti下的一些好用的插件。 环境: Centos 6.4 X86_64 Ca…

    Linux干货 2015-03-19
  • 系统管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生产环境中的服务器在处理请求并生成回应数据的时间主要消耗在服务器端,包括了众多的环节,如何全面了解我们linux服务器的CPU使用率、使用时间、内存占用比例、磁盘IO数据、网络相关数据等等众多指标,保证我们的linux服务器顺利完成每一个请求,怎能没有几个趁手的利刃,而今天就让我们见识一下系统管理中三大利刃。 相传一把三尺长的软剑,叫…

    Linux干货 2015-11-18
  • yum报错2

    我的系统是centos 6.8 x86的; 安装pam_mysql时报错如下: [root@Ams ~]# yum install pam_mysql -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror…

    Linux干货 2016-08-02
  • Nginx+Keepalived实现站点高可用

    Nginx+Keepalived实现站点高可用 vrrp 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引…

    Linux干货 2016-11-07

评论列表(1条)

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

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