Linux系统管理之定时任务、包管理

2019-01-09  本文已影响0人  请叫我飘哥

1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"

1、创建备份目录
[root@node01 ~]# mkdir -p /backup
[root@node01 ~]# cd /backup/
[root@node01 backup]# ls
2、编辑crontab
[root@node01 backup]# crontab -e
##这里我们使用.xz的方式压缩,即每天的12点、0点的0分钟,进行一次备份
0 */12 * * *  /usr/bin/tar -Jcvf /backup/etc-$(date +"\%Y-\%m-\%d-\%H").tar.xz /etc > /dev/null
[root@node01 backup]# ls  -l
总用量 282592
-rw-r--r--. 1 root root 6883312 1月   4 12:00 etc-2019-01-04-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月   5 00:00 etc-2019-01-05-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月   5 12:00 etc-2019-01-05-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月   6 00:00 etc-2019-01-06-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月   6 12:00 etc-2019-01-06-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月   7 00:00 etc-2019-01-07-00.tar.xz
-rw-r--r--. 1 root root 6886940 1月   7 12:00 etc-2019-01-07-12.tar.xz

2、rpm包管理功能总结以及实例应用演示。

 [root@node01 Packages]# rpm -qa httpd
  httpd-2.4.6-88.el7.centos.x86_64
 [root@node01 Packages]# rpm -qf /etc/httpd/conf/httpd.conf 
  httpd-2.4.6-88.el7.centos.x86_64
 [root@node01 Packages]# rpm -q --whatprovides  httpd
  httpd-2.4.6-88.el7.centos.x86_64
  [root@node01 Packages]# rpm -q --whatrequires httpd
  没有软件包需要 httpd
  [root@node01 Packages]# rpm -q --whatrequires bash
  dracut-033-502.el7.x86_64
  initscripts-9.49.39-1.el7.x86_64
  lvm2-2.02.171-8.el7.x86_64
  rsyslog-8.24.0-12.el7.x86_64
  [root@node01 Packages]# rpm -qc httpd
  /etc/httpd/conf.d/autoindex.conf
  /etc/httpd/conf.d/userdir.conf
  /etc/httpd/conf.d/welcome.conf
  /etc/httpd/conf.modules.d/00-base.conf
  /etc/httpd/conf.modules.d/00-dav.conf
  /etc/httpd/conf.modules.d/00-lua.conf
  /etc/httpd/conf.modules.d/00-mpm.conf
  /etc/httpd/conf.modules.d/00-proxy.conf
  /etc/httpd/conf.modules.d/00-systemd.conf
  /etc/httpd/conf.modules.d/01-cgi.conf
  /etc/httpd/conf/httpd.conf
  /etc/httpd/conf/magic
  /etc/logrotate.d/httpd
  /etc/sysconfig/htcacheclean
  /etc/sysconfig/httpd
[root@node01 conf]# rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf
显示httpd这个程序中的/etc/httpd/conf/httpd.conf这个文件的数据内容和修改时间有过变动

3、yum的配置和使用总结以及yum私有仓库的创建。

YUM (Yellowdog Update Modifier) 程序包管理器的前端工具,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

[main]
cachedir=/var/cache/yum/$basearch/$releasever   # 缓存文件路径
keepcache=0                                     #缓存到本地的文件是否保存
debuglevel=2                                    # 调试级别
logfile=/var/log/yum.log                        # 安装的日志文件
exactarch=1                                     # 精确严格的平台release匹配
obsoletes=1
gpgcheck=1                                      #检测来源合法性和完整性
plugins=1
installonly_limit=5                             #同时安装多少程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release                     #当前发行版版本号从哪儿获取

/etc/yum.repos.d/*.repo 为指定仓库提供配置

     [repositoryid]                                                    #仓库ID,唯一标识别,不能重复
     name=Some name for this repository                                #完整的仓库名称
     baseurl=url://server1/path/to/repository/                         # yum仓库指明的访问路径
             url://server2/path/to/repository/
             url://server3/path/to/repository/
    enabled={1|0}   默认为1                                            #是否启用此yum仓库,默认启用
    gpgcheck={1|0}                                                    #是否检查完整性和来源合法性
    gpgkey=URL                                                        #秘钥文件位置,可能是对方仓库提供
    enablegroups={1|0} 默认为1                                        #是否基于组来批量管理程序包,默认支持
    failovermethod={roundrobin|priority}                              #故障转移方法:轮询、根据优先级选择; 默认roundrobin随机
    cost=默认为1000                                                   #设置开销,默认为1000

yum的repo配置文件中可用的变量

$releasever:  当前OS的发行版的主版本号
$arch:    平台  
$basearch:    基础平台
$YUM0-$YUM9

4、写一个脚本实现列出以下菜单给用户:

(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit

思路,写一个循环,1-3分别代表disk、mem、cpu等信息
4表示退出,只有选择4时脚本才会结束循环退出
当现在1-3中任何一个数字时打印info信息后,并继续循环
[root@node01 ~]# vim dis_info.sh 
#!/bin/bash
#
while  true
do
cat << END
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
END

read -p  "Your choice: "  option

case $option in
1)
      fdisk -l /dev/sd[a-z];;
2)
      cat /proc/meminfo;;
3)
      lscpu;;
4)
      exit 1;;
*)
      echo " Useage [1-4]";;
esac
done

脚本演示
[root@node01 ~]# sh dis_info.sh 
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: x
Useage [1-4]
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: 2
            total        used        free      shared  buff/cache   available
Mem:           3791         148        1221          16        2420        3322
Swap:          6015           0        6015
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: 

5、sed用法总结并结合实例演示

sed :Stream EDitor ,流编辑器,行操作
格式:sed [OPTION]...'script' [input-file]...
script表示地址定界编辑命令

6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序

思路:以nginx日志为例,根据定义的日志格式,先找每行中的IP和状态码对应关系,
并且只有IP和状态码信息,然后根据状态码做锚定[4|5][0-9][0-9],然后根据IP进行排序,去重,再按照出现次数进行排序
awk -F ' ' '{ print $1,$9 }'  /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -n
演示效果:
[root@node2 ~]# awk -F ' ' '{ print $1,$9 }'  /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -nr
     16 10.192.52.63 403
      8 10.192.52.63 404
      1 10.192.2.222 404
      1 10.192.1.163 404
[root@node2 ~]# 

7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包

先前已经搭建了一个私有仓库,我们利用先前搭建的仓库进行安装

上一篇下一篇

猜你喜欢

热点阅读