Linux简单命令操作(下)

14. SSH免密登陆

SSH 为 Secure Shell(安全外壳协议) 的缩写。

很多ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而SSH就是专为远程登录会话和其他网络服务提供安全性的协议。

认证机制

从客户端来看,SSH提供两种级别的安全验证。

  1. 第一种方式(基于口令的安全验证)

  2. 第二种方式(基于密钥的安全验证)

14.1 基于口令安全验证的SSH登陆

linweibingdeMacBook-Air:~ lean$ ssh -l root 192.168.7.103
root@192.168.7.103's password: 
Last login: Fri May  4 20:28:16 2018 from 192.168.7.101
[root@mini ~]# exit
logout
Connection to 192.168.7.103 closed.
linweibingdeMacBook-Air:~ lean$ ssh 'root@192.168.7.103'
[email protected]'s password: 
Last login: Fri May  4 20:40:45 2018 from 192.168.7.101
[root@mini ~]# 

14.2 基于密钥安全验证的SSH登陆

这里写图片描述

针对客户端命令如下:

//1.产生对应的秘钥(公钥和私钥)
ssh-keygen
....Enter....
....Enter....
....Enter....
Your identification has been saved in /Users/lean/.ssh/id_rsa.
Your public key has been saved in /Users/lean/.ssh/id_rsa.pub.
//2.将公钥直接发送到目标机器的秘钥池里去
ssh-copy-id root@192.168.7.103

//3.尝试再次登陆  此刻无需密码即可登陆
ssh '[email protected]'
Last login: Fri May  4 21:04:53 2018 from 192.168.7.101

因为是使用root用户登陆的,所以公钥将直接发送到目标机的/root/.ssh中,文件名为authorized_keys:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkKheWDTJpBwH8VTqHyPphUZ5zgm0RbnfYLpIYgNxWEa4Ohv/IGyECjxcNi3k3yCiGrtLS9Lx3VN54w5oyVTg1vYs/OXPuiIQGV+1dOhWX3xbjz32a1wgxH9XnPN9yNPsibtpDyVRlIZs+UTiUO/uNGWjkV7cOKCrKeuEUSYp2HUJBtNtd0PSI7PqzgnhkrzgZeTdB4DzEWf8dgFc2N2HWLP32fGUqWLOrTYSt+xKRlaCs2l5cWLX5Z7HqBchOlO+OQhAwv/haWgz8AwuOW8cP8+6ZtJUO7eEZ9sv4AQYUO8EkZcS3Nxo5wOlyDoA+ERM1kH/SZf/IxJ83NcX9N49X lean@linweibingdeMacBook-Air.local

15. Linux上常用软件安装

软件安装的方式有三种:

  1. 二进制发布包:软件已经针对具体平台编译打包发布,只要解压,修改配置即可
  2. RPM发布包:软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装。(小部分的发布包也会遵循RPM的命令方式进行发布)
    • Yum在线安装:软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题。本节重点旨在构建Yum本地仓库
  3. 源码编译安装:软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署。

15.1 二进制发布包-JDK安装

  1. 上传jdk压缩包,通过sftp工具上传即可

  2. 解压jdk压缩包

    tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local/
  3. 修改环境变量PATH

    vi /etc/profile
    
    
    ## 在文件最后加两行:
    
    export JAVA_HOME=/usr/local/jdk1.7.0_67
    export PATH=$PATH:$JAVA_HOME/bin
  4. 环境变量生效

    source /etc/profile

15.2 二进制发布包-Tomcat安装

  1. 上传Tomcat压缩包,通过sftp工具上传即可

  2. 解压Tomcat压缩包

    tar -zxvf /soft/apache-tomcat-7.0.47.tar.gz -C /usr/local/
  3. 进入脚本工具文件夹:

    cd /usr/local/apache-tomcat-7.0.47/bin/
  4. 启动web网站服务:

    [root@linuxmini bin]# ./startup.sh 
    Using CATALINA_BASE:   /usr/local/apache-tomcat-7.0.68
    Using CATALINA_HOME:   /usr/local/apache-tomcat-7.0.68
    Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.68/temp
    Using JRE_HOME:        /usr/local/jdk1.7
    Using CLASSPATH:       /usr/local/apache-tomcat-7.0.68/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.68/bin/tomcat-juli.jar
    Tomcat started.
    
    [root@linuxmini bin]# netstat -nltp | grep 8080
    tcp        0      0 :::8080                     :::*                        LISTEN      9187/java 

15.3 RPM发布包-MySql数据库安装

  1. 安装MySql服务端:
## 1.先装server
[root@linuxmini ~]# rpm -ivh softwares/MySQL-server-5.6.40-1.el6.x86_64.rpm 
warning: softwares/MySQL-server-5.6.40-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                ########################################### [100%]
        file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.6.40-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-7.el6.x86_64
        file /usr/share/mysql/danish/errmsg.sys from install of MySQL-server-5.6.40-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-7.el6.x86_64
...
...

## 2.发现了包冲突,执行删除包的命令解决:
[root@linuxmini ~]# rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

## 3.然后继续重新安装server
[root@linuxmini ~]# rpm -ivh softwares/MySQL-server-5.6.40-1.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:MySQL-server           ########################################### [100%]


## 系统为root用户随机产生了一个密码,可以在'/root/.mysql_secret'找到。
## 必须在第一次连接服务器的时候调用'SET PASSWORD'重置密码

## 另外你也可以使用如下命令:
/usr/bin/mysql_secure_installation
  1. 安装MySql客户端:
rpm -ivh /root/softwares/MySQL-client-5.6.40-1.el6.x86_64.rpm
warning: /root/softwares/MySQL-client-5.6.40-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                ########################################### [100%]
   1:MySQL-client           ########################################### [100%]
  1. 启动服务:
[root@linuxmini ~]# service mysql start
Starting MySQL.Logging to '/var/lib/mysql/linuxmini.err'.
.....                                                      [  OK  ]
[root@linuxmini ~]# service mysql status
MySQL running (9539)                                       [  OK  ]
  1. 利用客户端登陆MySql服务端:
[root@linuxmini ~]# cat /root/.mysql_secret
# The random password set for the root user at Mon May  7 15:28:29 2018 (local time): LAq6SLdvMl3CyzEo

[root@linuxmini ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.40
...

mysql> show databases;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('root');
Query OK, 0 rows affected (0.01 sec)

mysql> exit;
Bye
[root@linuxmini ~]# mysql -uroot -proot;
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5...

15.4 Yum程序包安装原理

Yum作为rpm的前端管理工具, 主要实现是在安装程序包时, 通过程序包间的依赖关系, 获取得到该程序包的所有依赖性程序包, 从而实现该程序包的成功安装。

由上面提供的服务来看,Yum应该具备2个功能:收集了程序包之间的依赖,提供所有程序包的仓库。

这里写图片描述

Yum功能上的实现原理

  1. Yum可以看作是CS架构的软件
  2. Server端先对程序包进行分类后存储到不同repository容器中; 再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用。
  3. Cilent端通过Yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/repodata.d/SERVER.repo)找到指定的Server端。
  4. 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取,。
  5. 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装。

为了提升下载的速度,我们可以将网络上的Yum源改成本地的,制作私有yum源的两种方式:基于本地磁盘路径和基于内网web服务器的yum源。

内网web服务器yum源配置:

  1. 在机器上部署一个httpd 的 web服务器,确保httpd运行成功
[root@linuxmini apache-tomcat-7.0.68]# service iptables stop
[root@linuxmini apache-tomcat-7.0.68]# service httpd status
httpd (pid  2474) is running...
  1. 在httpd服务的web目录中放入rpm库。比如将centos安装光盘中的rpm库放入:
[root@linuxmini dev]# mkdir /var/www/html/centeros/
[root@linuxmini dev]# mkdir /var/www/html/centeros-2/
[root@linuxmini dev]# mount -t iso9660 -o ro /dev/cdrom2 /var/www/html/centeros/
[root@linuxmini dev]# mount -t iso9660 -o ro /dev/cdrom1 /var/www/html/centeros-2/
[root@linuxmini dev]# ll /var/www/html/centeros/
total 558
-r--r--r--. 2 root root     14 May 22  2016 CentOS_BuildTag
dr-xr-xr-x. 3 root root   2048 May 22  2016 EFI
-r--r--r--. 2 root root    212 Nov 27  2013 EULA
-r--r--r--. 2 root root  18009 Nov 27  2013 GPL
dr-xr-xr-x. 3 root root   2048 May 22  2016 images
dr-xr-xr-x. 2 root root   2048 May 22  2016 isolinux
dr-xr-xr-x. 2 root root 528384 May 22  2016 Packages
-r--r--r--. 2 root root   1359 May 21  2016 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 2 root root   4096 May 22  2016 repodata
-r--r--r--. 2 root root   1706 Nov 27  2013 RPM-GPG-KEY-CentOS-6
-r--r--r--. 2 root root   1730 Nov 27  2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--. 2 root root   1730 Nov 27  2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--. 2 root root   1734 Nov 27  2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root   3380 May 22  2016 TRANS.TBL
  1. 打开网页

这里写图片描述

  1. 修改yum的repo库配置文件/etc/yum.repos.d/centos-local-web.repo

    [root@linuxmini dev]# cd /etc/yum.repos.d/
    [root@linuxmini yum.repos.d]# rename .repo .repo.bak *
    [root@linuxmini yum.repos.d]# cp CentOS-Media.repo.bak centos-local-web.repo
    [root@linuxmini yum.repos.d]# vi centos-local-web.repo

    内容如下:

    [c6-local-web]
    name=CentOS-local-web
    baseurl=http://192.168.7.160:80/centeros/        ## 设置yum的软件库地址为.../centeros/
        http://192.168.7.160:80/centeros-2/
    gpgcheck=0  ##设置不检查
    enabled=1    ##启动该配置
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  2. 以Tomcat为例,实现下载:

    [root@linuxmini yum.repos.d]# yum list | grep tomcat
    ...
    
    //如果当前当前Tomcat进程正在运行 直接停止
    //jps  jdk工具命令
    [root@linuxmini yum.repos.d]# jps
    5964 Bootstrap
    3162 Jps
    [root@linuxmini yum.repos.d]# kill -9 5964
    
    
    [root@linuxmini yum.repos.d]# yum list | grep tomcat
    // -y 表示安装的过程中确认添加相关依赖 不用再次确认
    [root@linuxmini yum.repos.d]#  yum install -y tomcat6.noarch   
    
    [root@linuxmini yum.repos.d]# service --status-all | grep tomcat
    dnsdomainname: Host name lookup failure
    grep: /proc/fs/nfsd/portlist: No such file or directory
    tomcat6 is stopped                                         [  OK  ]
    [root@linuxmini yum.repos.d]# service tomcat6 start
    Starting tomcat6:                                          [  OK  ]
    

15.5 源码编译安装-redis

  1. 到官网下载最新stable版

  2. 解压源码并进入目录 tar -zxvf redis-2.8.19.tar.gz -C ./redis-src/

  3. make

  4. 如果报错提示缺少gcc,则安装gcc : yum install -y gcc

    如果报错提示:Newer version of jemalloc required 则在make时加参数:make MALLOC=libc

  5. 安装redis,指定安装目录,如 /usr/local/redis

    make PREFIX=/usr/local/redis install

  6. 拷贝一份配置文件到安装目录下

    切换到源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下

    cp redis.conf /usr/local/redis/

  7. 启动redis

    cd /usr/local/redis

    bin/redis-server redis.conf

这里写图片描述

16. 防火墙设置

防火墙根据配置文件/etc/sysconfig/iptables来控制本机的“出、入”网络访问行为。其对行为的配置策略有四个策略表:

这里写图片描述

  • raw表:用来决定是否对数据包进行状态跟踪。(不常用)
  • mangle表:为数据包设置标记,有ACK、SYN、FIN、RST、PSH、URG等标记。(不常用)
  • nat表:修改数据包的IP地址、端口等信息。(网关型防火墙常用)
  • filter表:确定是否放行数据包。(常用)

这里写图片描述

对于路由,需要掌握如何开启,查看状态,关闭服务。如下:

  • 查看防火墙状态 service iptables status
  • 关闭防火墙 service iptables stop
  • 启动防火墙 service iptables start
  • 禁止防火墙自启 chkconfig iptables off
[root@linuxmini ~]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  
  • prot:协议类型
  • source : 0.0.0.0/0 代表任何访问机器的IP和任何端口
  • destination:0.0.0.0/0 本机的任何网卡IP和端口

练习:

  1. 禁止ssh登陆(若果服务器在机房,一定要小心) iptables -A INPUT -p tcp –dport 22 -j DROP
  2. 加入一条INPUT规则开放80端口 iptables -I INPUT -p tcp –dport 80 -j ACCEPT
  3. 清除所有规则 iptables -F
  4. 保存配置 service iptables save.

17. 高级文本处理命令

17.1 cut命令

cut命令可以从一个文本文件或者文本流中提取文本列。它会首先将一个文本以分隔符的形式分成多行,然后选出某个符合条件的文本列。

语法

cut -d'分隔字符' -f fields     ## 用于有特定分隔字符
cut -c 字符区间            ## 用于排列整齐的信息

选项与参数:
-d:后面接分隔字符。与 -f 一起使用;
-f:依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c:以字符 (characters) 的单位取出固定字符区间;

示例:

[root@linuxmini ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.7/bin:/root/bin
##找出第5个数据
[root@linuxmini ~]# echo $PATH | cut -d ':' -f 5
/bin
##找出第3个,第5个数据
[root@linuxmini ~]# echo $PATH | cut -d ':' -f 3,5
/usr/local/bin:/bin
##找出3到最后的数据
[root@linuxmini ~]# echo $PATH | cut -d ':' -f 3-
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.7/bin:/root/bin
##找出第1,第2,从6到最后的数据
[root@linuxmini ~]# echo $PATH | cut -d ':' -f 1-2,6
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin

17.2 sed命令

sed命令可以实现删除/替换 某些符合条件的行并显示,但是它不会对原文件进行修改。

语法:

##删除:d命令
sed '2d' example    -----删除example文件的第二行。
sed '2,$d' example   -----删除example文件的第二行到末尾所有行。
sed '$d' example   -----删除example文件的最后一行。
sed '/test/'d example-----删除example文件所有包含test的行。

示例:

[root@linuxmini ~]# cat test.txt 
a11111111111
b2222222
c33333333
d44444
e5555555
f66666666
h777777
j66666666
[root@linuxmini ~]# sed '2,$d' test.txt 
a11111111111
[root@linuxmini ~]# sed '$d' test.txt 
a11111111111
b2222222
c33333333
d44444
e5555555
f66666666
h777777
[root@linuxmini ~]# sed '/6666/'d test.txt 
a11111111111
b2222222
c33333333
d44444
e5555555
h777777

语法:

##替换:s命令
$ sed 's/test/mytest/g' example
在整行范围内把test替换为mytest。如果没有g标记,则只替换每行第一个。

$ sed -n 's/^test/mytest/p' example
(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

$ sed 's/^192.168.0.1/&localhost/' example
如果某一行以192.168l.0.1开头,则在其后添加localhost。

$ sed -n '/test/,/check/p' example
存在字符test和check的行都被打印。

$ sed -n '5,/^test/p' example
打印从第五行开始到第一个包含以test开始的行之间的所有行。

语法:

## 如下代码不做演示
文件读入:将file里的内容被读进来,显示在与test匹配行下面,如匹配多行则file的内容将显示在所有匹配行的下面。
$ sed '/test/r file' example

写入文件:在example中所有包含test的行都被写入file里。
$ sed -n '/test/w file' example

追加命令:a命令
$ sed '/^test/a\\--->this is a example' example    
##  '--->this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

插入:i命令  如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
$ sed '/test/i\\some thing new -------------------------' example

下一个:n命令  如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
$ sed '/test/{ n; s/aa/bb/; }' example

退出:q命令  打印完第10行后,退出sed。
$ sed '10q' example

17.3 awk命令

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

案例1

假设last -n 5的输出如下
[root@www ~]# last -n 5       ## 仅取出前五行
root     pts/1   192.168.1.100  Tue Feb 10 11:21   still logged in
root     pts/1   192.168.1.100  Tue Feb 10 00:46 - 02:28  (01:41)
root     pts/1   192.168.1.100  Mon Feb  9 11:41 - 18:30  (06:48)
dmtsai   pts/1   192.168.1.100  Mon Feb  9 11:41 - 11:41  (00:00)
root     tty1                   Fri Sep  5 14:09 - 14:10  (00:01)

如果只是显示最近登录的5个帐号
# last -n 5 | awk  '{print $1}'
root
root
root
dmtsai
root
## awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键""[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。

案例2

如果只是显示/etc/passwd的账户。
这种是awk+action的示例,每行都会执行action{print $1}。-F指定域分隔符为':'
# cat /etc/passwd |awk  -F ':'  '{print $1}'  
root
daemon
bin
sys

如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割
#cat /etc/passwd |awk  -F ':'  '{print $1"\-----"$7}'
root    /bin/bash
daemon  /bin/sh
bin     /bin/sh
sys     /bin/sh


如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
....
blue,/bin/nosh

案例3

## 如下代码不做演示

搜索/etc/passwd有root关键字的所有行
#awk  -F:  '/root/'  /etc/passwd
root:x:0:0:root:/root:/bin/bash

统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容:
#awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh

使用printf替代print,可以让代码更加简洁,易读
awk  -F ':'  '{printf("filename:%s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd

18. crontab定时器配置

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。使用该功能首先需要启动服务:

yum install crontabs
服务操作说明:
service crond status ## 查看crontab服务状态
service crond start  ## 启动服务
service crond stop  ## 关闭服务
service crond restart ## 重启服务
service crond reload  ## 重新载入配置

chkconfig --list ## 查看crontab服务是否已设置为开机启动,执行命令:
chkconfig  --level 35 crond on ## 加入开机自动启动:

语法:

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

参数说明:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

命令示例:

​ crontab file [-u user]## 用指定的文件替代目前的crontab。

必掌握:

​ crontab -l [-u user]## 列出用户目前的crontab.

​ crontab -e [-u user]## 编辑用户目前的crontab.

调度配置基本格式 :

*  *  *  *  *  command 
分  时  日  月  周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时0~23(0表示0点) 7-9表示:8点到10点之间
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令 

配置示例

30 21 * * * /usr/local/etc/rc.d/httpd restart 
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart 
上面的例子表示每月1、10、22日的4 : 45重启apache

10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart 
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart 
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart 
上面的例子晚上11点到早上7点之间,每隔一小时重启apache 

*/1 * * * * date >> /root/date.txt
上面的例子表示每分钟执行一次date命令

案例:每分钟将时间写入到文件中。

[root@linuxmini ~]# crontab -e 
*/1 * * * * date >> date.txt  

[root@linuxmini ~]# crontab -l
*/1 * * * * date >> date.txt

猜你喜欢

转载自blog.csdn.net/qq285016127/article/details/80237834
今日推荐