07Linux常用命令(软件包安装、定时任务、日志轮转)

编程入门 行业动态 更新时间:2024-10-26 16:24:58

07Linux常用命令(<a href=https://www.elefans.com/category/jswz/34/1760240.html style=软件包安装、定时任务、日志轮转)"/>

07Linux常用命令(软件包安装、定时任务、日志轮转)

Linux常用命令(软件包安装、定时任务、日志轮转)

安装软件
rpm【管理方式】
yum

rpm介绍:

rpm软件包名称:
软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律
#有依赖关系,不能自动解决依赖关系。
举例:openssh-6.6.1p1-31.el7.x86_64.rpm  
数字前面的是名称
数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几---操作系统的版本。  
noarch : 32位64位都支持
x86_64 :  64位
i4-686的包 :32位
devel:表示这个RPM包是软件的开发包;
======#用rpm安装需要考虑如下信息:
1.需要考虑系统的版本需要与rpm对应
2.系统的架构:如32位还是64位
3.需要考虑依赖关系

rpm安装

语法 # rpm -ivh 软件包名称
-i 表示安装,instll的意思
-v显示安装信息,还可以”-vv”、vvv”, v提供的越多显示信息越多
-h显示安装进度,以#显示安装的进度
-U 升级或升级包
-F 只升级己安装的包
-test 测试是否能够成功安装指定的rpm包
-force 强制动作
--replacepkgs 替换安装,即重新覆盖安装
查找rpm包的网站:/  
1.通过rpm安装
可以先下载下来
[root@xiaoqiang ~]# wget .3.23-11.el7.x86_64.rpm
#wget下载命令
#wget -O 指定存放路径
[root@xiaoqiang ~]# rpm -ivh ntfs-3g-2017.3.23-11.el7.x86_64.rpm  #本地安装rpm包2.直接通过连接安装rpm包
[root@xiaoqiang ~]# rpm -ivh .3.23-11.el7.x86_64.rpm3.升级与更新RPM软件包
升级:rpm -Uvh package_name,如果后面接的软件没有安装过,则系统直接安装;如果安装过,则系统自动更新至新版。
更新:rpm -Fvh package_name,如果后面接的软件没有安装过,则软件不会被安装;如果安装过,则系统自动更新至新版。

rpm查询

==查询   
(从本地的rpm数据库)
-q[p] -q查询已安装的包,-qp查询未安装的包。它们都可接下面的参数-a 查询所有已安装的包,也可以指定通配符名称进行查询-i 查询指定包的信息(版本、开发商、安装时间等)。从这里面可以查看到软件包属于哪个包组。-l 查询包的文件列表和目录(包在生产的时候就指定了文件路径,因此可查未装包)-R 查询包的依赖性(Required)-c 查询安装后包生成的配置文件-d 查询安装后包生成的帮助文档
-f 查询系统文件属于哪个已安装的包(接的是文件而不是包)
--scripts 查询包相关的脚本文档。脚本文档分四类:安装前运行、安装后运行、卸载前运行、卸载后运行# rpm -qa | grep 软件名    # 查找软件是否安装
# rpm -ql httpd           #查询http安装的文件与目录所在完整文件名(list
# rpm -qf /usr/share/httpd/noindex     #查询该文件属于哪个包
# rpm -qf /etc/passwd  #查询某一个文件是哪个软件产生的:只能查询已经安装好的软件# rpm -qRp zip-3.0-1.el6.x86_64.rpm 查询某个未安装包的依赖性如zip-3.0-1.el6.x86_64.rpm的依赖性

rpm卸载软件包

语法:# rpm -e 软件名称
-e erase
--nodeps 忽略依赖性强制安装或卸载(no dependencies)
rpm -e `rom -qa | grep nginx`
rpm工具管理软件包总结:
1. 很难解决包依赖关系 
2. 如果某个文件没有,很难知道它由哪个rpm包提供如果该package被其他package依赖,会有报错.
如果RPM文件经常安装/删除/升级,某些操作可能会导致RPM数据库/var/lib/rpm/内的文件损坏,可以使用—rebuilddb这个参数来重建数据库:
rpm –rebuilddb

安装包后的文件分布

rpm包被安装后,会在/var/lib/rpm下会建立己装rpm数据库,以后有任何rpm的升级、查询、版本比较等包的操作都是从这个目录下获取信息并完成 相应操作的。
rpm安装完成后,相关的文件会复制到多个目录下(具体复制的路径是在制作rpm包时指定的)。一般来说,分布形式差不多如下表。
/etc	放置配置文件的目录
/bin> /sbin、/usr/bin 或/usr/sbin	一些可执行文件
/lib、 /lib64、 /usr/1ib(/usr/lib64)	-些库文件
/usr/include	-些头文件
/usr/share/doc	一些基本的软件使用手册与帮助文件
/usr/share/man	一些man page档案

yum方式管理

#可以自动解决rpm软件依赖关系,虽然是通过yum安装的但是最后执行的还是rpm,也就是说没有rpm命令yum也就不能用了。yum /et	
分类:本地yum和远程yum
本地yum:
file://
远程yum:
http://
ftp://

yum操作

安装好环境之后我们有centos自带的官方yum源,我们也可以自行更换或者制作自己的yum源
格式:yum [options] COMMAND清理yum缓存:#yum clean all缓存软件包信息,提高搜索/安装软件的速度:# yum makecache fast查询yum源信息: # yum repolist  all 列出所有仓库#yum repolist  
列出包的依赖关系:# yum deplist查找软件:# yum search  mysql   
此命令会搜索到系统已经安装和yum源里没有安装的软件信息,可以用他简单测试yum是否好用查看命令属于哪个软件(包):# yum provides rz    查看系统已经安装好的软件和没有安装的软件(源里存在即可查到):# yum list all #一般会结合grep来搜索包,如yum list all | grep -i zabbix
安装软件:# yum install 软件名称# yum install mysql mysql-server -y			
重装:# yum -y reinstall 软件名        卸载软件:# yum erase  mysql-server # yum -y remove mysql-serveryum卸载rpm查找出来所有与httpd相关的软件包全部卸载掉:# yum -y remove `rpm -qa | grep httpd` 本地包安装:#yum localinstall -y *.rpm 查看装的包的命令,排错:#yum history #yum history undo 22更新包:#yum update 检车是否有可更新的rpm软件:#yum check-update 查看软件包信息:#yum info 软件包名称   安装yum-config-manager命令
系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令
yum -y install yum-utils  --yum扩展
yum-config-manager --add-repo .repo

yum源配置

yum需要记住的目录或文件:
/etc/yum.repos.d/ #存放yum源目录,该目录里面的文件必须以.repo结尾
/etc/yum.conf #yum配置文件
/etc/cache/yum  #yum的包缓存的目录

更换网络yum源–aliyun

=a2c6h.13651102.0.0.3e221b11WaK1yM  --阿里yum源地址
[root@xiaoqiang ~]# cd /etc/yum.repo.d
[root@xiaoqiang yum.repos.d]# mkdir back
[root@xiaoqiang yum.repos.d]# mv *.repo back
[root@xiaoqiang yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo .repo  #下载aliyun的yum源
参数解释
curl -o  指定存放路径
或者
wget -O /etc/yum.repos.d/CentOS-Base.repo .repo
安装扩展源--epel.repo
[root@xiaoqiang ~]# wget -O /etc/yum.repos.d/epel.repo .repo
[root@xiaoqiang ~]# cd /etc/yum.repos.d/
[root@xiaoqiang yum.repos.d]# ls
CentOS-Base.repo  epel.repo

制作本地Yum源方式

yum仓库模板

#vim CentOS-Base.repo
[base]	#仓库ID, ID必须保证唯一性
name	#仓库名称,可随意命名
mirrorlist	#该地址下包含了仓库地址列表,包含一个或多个镜像站点,和baseurl使用一个就可以了
baseurl	#仓库地址。网络上的地址则写网络地址,本地地址则写本地地址,格式为"file://”后接路径,如file:///mnt/cdrom
gpgcheck=l	#指定是否需要gpg签名,1表不需要,0表示不需要
gpgkey =	#签名文件的路径
enable	#该仓库是否生效,enable=l表示生效,enable=O表示不生效
cost=	#开销越高,优先级越低repo配置文件中可用的宏:
$releasever	:程序的版本(release version),对Yum而言指的是redhat-relrase版本。只替换为主版本号,如Redhat6. 5则替换为6
$arch:系统架构
$basharch:	系统基本架构,如i686, i586等的基本架构为i386
$YUM0-9:在系统定义的环境变量,可以在yum中使用

通过镜像制作本地yum源:

mkdir /opt/xiexie #创建挂载目录
mount /dev/cdrom /opt/xiexie #将镜像挂载到创建的目录
或者:将镜像上传到/opt/ 并mount CentOS-7-x86_64-DVD-1708.iso /opt/xiexie/
#rm -rf /etc/yum.repos.d/*#手动编写文件
[root@xiaoqiang ~]# cd /etc/yum.repos.d/   #yum源配置文件存放目录
[root@xiaoqiang yum.repos.d]# vim CentOS.Base.repo  #在编写yum配置文件是必须是.repo
[centos7u4]  #yum源区别名称,用来区分其他的yum源,
name=centos7u4  #yum源描述   yum源名字
baseurl=file:///opt/xiexie #指定本地yum源的路径,镜像挂载目录
enabled=1  #是否使用此yum源(1为打开,0为关闭)
gpgcheck=0 #检查软件#自动生成yum源
#yum-congif-manager 
##yum install -y yum-utils   
#yum-congif-manager --add-repo 'file:///mnt'

yum排错:

1.yum配置文件必须以.repo结尾      
2.yum.conf里面8,9行的值设置成0
3.配置文件关键字错误
4.检查yum源是否存在
5.baseurl路径是否正确
6.镜像大小是否正确
7.当有Yum进程存在的时,无法同时再打开一个Yum进程

配置****epel****仓库

系统发行商在系统中放置的rpm包一般版本都较老,可能有些包有较大的延后性。而epel是由fedora社区维护的高质量高可靠性的安装源,有很多包 是比系统包更新的,且多出很多系统没有的包。总之,用到epel的机会很多很多,所以就拿来当配置示例了。
#注意:安装yum install yum-priorities
Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。有两种方式可以使用epel源。
查询版本安装:yum provides epel-release
方法一: 安装 epel-release-7-11.noarch 或者 epel-release
repo文件的配置格式如下:
shell> rpm -ivh epel-release-latest-6.noarch.rpm
安装后会在/etc/yum. repo, d/目录下生成两个epel相关的repo文件,其中一个是epel. repo«此文件中epel的源设置在了 fedora的镜像站点上,这 对国内网来说可能会较慢,可以修改它为下面的内容。
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://mirrors, sohu. com/fedora-epel/6Server/$basearch/
#mirrorlist=https://mirrors, fedoraproject, org/metalink?repo=epel-6&arch=$basearch
failovermethod=priori ty
enabled=l
gpgcheck=l
gpgkey=file:///etc/pk i/rpm-gpg/RPM-GPG-KEY-EPEL-6方法二:直接增加epel仓库
在/etc/yum. repos, d/下任意一个repo文件中添加上epel的仓库即可。
[epel]
name=epel
baseurl=http://mirrors, sohu. com/fedora-epel/6Server/$basearch/
enabled=l
gpgcheck=O
然后清除缓存再建立缓存即可。
yum clean all ; yum makecache

源码包管理:

而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。
源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。
源码安装的优点,编译安装过程,可以设定参数按照需求增加功能,进行安装,并且可以指定安装的版本,可以指定安装路径,灵活性比较大。

获得源码包途径 官方网站,可以获得最新的软件包

mysql: /

wget .7/mysql-boost-5.7.27.tar.gz

Nginx: www.nginx /mariadb

安装源码包 
准备工作(去Nginx官网下载Nginx软件的源码包) 
1.编译环境如编译器gcc、make 
# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel  #编译环境的准备gcc是编译工具,编译单个文件
make工具可以看成是一个智能的批处理工具,通过调用makefile文件中用户指定的命令来进行编译和链接的。(将这种高级语言写的代码编译成二进制语言)
pcre支持正则表达式
zlib-devel,有些应用依赖于这个库才能正常运行,因此需要安装zlib-devel
openssl-devel 某些库文件等跟开发相关的东西。2. 准备软件 nginx-1.16.0.tar.gz 
3. 部署安装Nginx软件服务
实战:                                                                       
[root@xiaoqiang ~]# wget .16.1.tar.gz
[root@xiaoqiang ~]# tar xzf nginx-1.16.1.tar.gz
[root@xiaoqiang nginx-1.16.1]# ./configure --user=www --group=www --prefix=/usr/local/nginx
[root@xiaoqiangr nginx-1.16.1]# make  #编译文件
[root@xiaoqiang nginx-1.16.1]# make install  #安装文件
[root@xiaoqiang ~]# useradd www   #创建nginx用户
[root@xiaoqiang ~]# /usr/local/nginx/sbin/nginx  #启动nginx
[root@xiaoqiang ~]# systemctl stop firewalld  #关闭防火墙停止nginx
[root@xiaoqiang nginx-1.16.1]# /usr/local/nginx/sbin/nginx -s stop
不同的程序,其conf igure选项不尽相同,应使用/configure—heIp”获取具体的信息。
详解源码安装三步曲 
# ./configure   #相对路径执行安装a. 指定安装路径,例如 --prefix=/usr/local/nginx     b. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求    最终生成:Makefilec. 软件模块或者功能的启用禁用#make			  //按Makefile文件编译,产生可执行的文件。但是这个文件在当前目录中#make install	    //按Makefile定义的文件路径安装,将产生的可执行文件,安装到合适的位置,相当于拷贝#将安装路径做环境变量

时间自动同步阿里云

yum  install -y ntpdate
ntpdate ntp6.aliyun

局域网远程yum源制作(企业案例)

操作系统:centos7.4资源: CentOS-7-x86_64-DVD-1708.iso镜像
实验服务器两台:192.168.246.170  (作为vsftpd服务端)192.168.246.169  (客户端)首先测试两台主机可否ping通在192.168.246.170上操作
[root@192 ~]# ping 192.168.246.169
PING 192.168.246.169 (192.168.246.169) 56(84) bytes of data.
64 bytes from 192.168.246.169: icmp_seq=1 ttl=64 time=0.644 ms
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# setenforce 0  #关闭selinux在192.168.246.169上操作:
[root@xiaoqiang ~]# ping 192.168.246.170
PING 192.168.246.170 (192.168.246.170) 56(84) bytes of data.
64 bytes from 192.168.246.170: icmp_seq=1 ttl=64 time=0.374 ms
[root@xiaoqiang ~]# systemctl stop firewalld
[root@xiaoqiang ~]# setenforce 0==========================================================
在192.168.246.170上操作---制作本地yum源,作为yum服务端将CentOS-7-x86_64-DVD-1708.iso 上传到/opt目录下[root@192 ~]# mkdir /opt/yum-iso   #创建挂载点[root@192 ~]# mount /opt/CentOS-7-x86_64-DVD-1708.iso /opt/yum-iso/[root@192 ~]# yum install -y vsftpd[root@192 ~]# systemctl start vsftpd[root@192 ~]# cp -r /opt/yum-iso/* /var/ftp/pub/[root@192 ~]# cd /var/ftp/[root@192 ftp]# yum install -y createrepo[root@192 ftp]# createrepo pub/[root@192 ftp]# cd /etc/yum.repos.d/
[root@192 yum.repos.d]# vim myyum.repo
[ftpYum]
name=ftpYum
baseurl=file:///opt/yum-iso
enabled=1
gpgcheck=0
[root@192 yum.repos.d]# yum clean all
[root@192 yum.repos.d]# yum makecache
[root@192 yum.repos.d]# yum repolist 
===================================================================
yum客户端
在192.168.246.169上操作:
[root@xiaoqiang ~]# cd /etc/yum.repos.d/
[root@xiaoqiang yum.repos.d]# vim my.repo
[ftpYum]
name=centos
baseurl=ftp://192.168.246.170/pub
enabled=1
gpgcheck=0
[root@xiaoqiang yum.repos.d]# yum clean all
[root@xiaoqiang yum.repos.d]# yum makecache
[root@xiaoqiang yum.repos.d]# yum repolist

计划任务

计划任务概念解析

在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、crontab软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。

计划任务分为一次性和循环性的计划任务

一、一次调度执行-----at

yum install -y at

作用:  计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据 

一次性调度执行 at—实战

时间定义:

at允许使用一套相当复杂的指定时间的方法。
● 能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
● 能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
● 能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm
● 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
● 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days
● 能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
语法格式
at <时间规格>now +5minteatime tomorrow (teatime is 16:00) noon5pm august 3 2019 #● atq:列出用户的计划任务,如果是超级用户将列出所有用户的任务,结果的输出格式为:作业号、日期、小时、队列和用户名
#● atrm:根据Job number删除at任务
#● batch:在系统负荷允许的情况下执行at任务,换言之,就是在系统空闲的情况下才执行at任务
# at 5pm+3 days    #三天后的下午5点,执行 /bin/ls
at> /bin/ls
at> 
job 7 at 2016-01-08 17:00# at 17:20 tomorrow    #明天17点钟,输出时间到指定文件内
at> date >/root/date.log         
at> 
job 8 at 2016-01-06 17:20# atq      #查看任务
8       2016-01-06 17:20 a root
7       2016-01-08 17:00 a root# atrm 7     #删除任务# atq 
8       2016-01-06 17:20 a root# 指定在今天下午5:30执行某命令。以下命令格式,结果都一样:# at 5:30pm # at 17:30 # at 17:30 today # at now + 5 hours # at now + 300 minutes # at 17:30 24.2.99 # at 17:30 2/24/99 # at 17:30 Feb 24 # at -f /home/test/work 4pm + 3 days     #在三天后下午4点执行文档work中的作业
#at sunday +10 minutes 将工作安排在比当前时间晚十分钟的下一个星期日进行:
# at 12:30 102120   安排作业在2020年10月21日12:30运行:
#at now +1 hours安排一个作业从现在开始运行一小时:您也可以在中[[CC]YY]MMDDhhmm[.ss]使用-t选项指定时间和日期。这是一个例子:at -t 202005111321.32#查看计划任务 at -l
例1: 
[root@xiaoqiang ~ ]# yum -y install at
[root@xiaoqiang ~]# systemctl status atd    #查看启动状态
[root@xiaoqiang ~ ]# systemctl start atd		#首先要启动服务[root@xiaoqiang ~]# at now +1min    #一分钟后开始执行
at> useradd uuuu  
at> <EOT>     	#Ctrl+D
job 1 at Sat Mar 21 22:34:00 2015[root@xiaoqiang ~]# id uuuu

从命令行输入at

例2: 
[root@xiaoqiang ~]# vim at.jobs 
useradd u99 
useradd u00 
touch /a.txt[root@xiaoqiang ~]# at 20:33 < at.jobs

从文件输入at

例3:
1. 准备sudo用户
[root@xiaoqiang ~]# id xiexie
uid=1007(xie) gid=1012(xie) groups=1012(xie)
[root@xiaoqiang ~]# useradd xiexie  #如果不存在创建
#usermod -aG wheel xiexie
[root@xiaoqiang ~]# visudo91 ## Allow root to run any commands anywhere92 root    ALL=(ALL)       ALL93 xie    ALL=(ALL)       NOPASSWD: ALL  #添加内容[root@xiaoqiang ~]# su - xiexie 
2. 以sudo 用户jack创建at任务[jack@xiaoqiang ~]$ vim xiexie.atsudo useradd u200sudo useradd u300sudo touch /home/xiexie.txt[jack@xiaoqiang ~]$ at 20:38 < xiexie.at                                   

循环调度执行cron 用户级

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。
###管理方式: 
crontab -l	List the jobs for the current user. //列出当前用户的计划任务
crontab -r	Remove all jobs for the current users. //删除当前用户所有的计划任务
crontab -e	Edit jobs for the current user.  	//编辑当前用户的计划任务
crontab -i:删除条目时提示是否真的要删除
管理员可以使用 -u username, 去管理其他用户的计划任务
丢了就在这里找看看:/var/log/cron命令:
crond是允许接受选项的。
crond [-n][-円[-x flags]
-n:让crond以前端方式运行,即不依赖于终端。
-P:不重设环境变量PATH,而是从父进程中继承。
-X:设置调试项,flags是调试方式,比较有用的方式是test和sch,即"-x test"和"-x sch”。
:其中test调试将不会真正的执行,sch调试将可以看到等待时间。具体的见下面的示例。
先看看启动脚本启动crond的方式。例如:
crontab -u root -l # root 查看自己的 cron 计划任务
crontab -u san -r # root 想删除 san 的 cron 计划任务
安装软件#  yum -y install crontabs  #如果软件不存在安装
启动服务rhel5/6:
#  /etc/init.d/crond status
#  /etc/init.d/crond startrhel7:
#  systemctl start crond.service
#  systemctl status crond.service
#  systemctl enable crond.service开机启动(rhel5/6)
# chkconfig crond on# systemctl status crond.service  #查看服务状态# ps -ef | grep crond 
root        755      1  0 20:18 ?        00:00:00 /usr/sbin/crond -n#crond进程每分钟会处理一次计划任务存储位置:
# cd /var/spool/cron/
语法格式 :        (一个月中的某天)           星期几
Minutes   Hours    Day-of-Month    Month    Day-of-Week    Command 分钟	     小时	        日(天)	   月		周(星期)	执行的命令,最好是命令的绝对路径0-59	  0-23  	  1-31         1-12	      0-7
* * * * *  /usr/bin/mkdir /opt/`date +%F-%X`代表每分钟都执行
*/5 * * * * 每五分钟执行时间:
*:使用”*”表示每单位,即每分钟,每小时,每天,每月,每周几(仍然是每天)。*/5 每隔分钟
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”[表示,:不同的时间段]中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”[表示范围]正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

实战

[root@xiaoqiang ~]# vim /home/soso.sh
#!/bin/bash
touch /opt/a.txt
[root@xiaoqiang ~]# chmod +x /home/soso.sh

创建计划任务

[root@xiaoqiang ~]# crontab -e			//当前用户编写计划任务
每天6:00执行
0 6 * * *  /home/soso.sh每周六凌晨4:00执行
0 4 * * 6  /home/soso.sh每天0:30
30 0 * * *    /home/soso.sh
每周一到周五8:00,每周一到周五9:00
0 8,9 * * 1-5   /home/soso.sh每周六23:59
59 23 * * 6      /home/soso.sh
[root@xiaoqiang ~]# crontab -l      #列出计划任务

实例

00 00 * * * /home/soso.sh			#每天凌晨00 02 * * * ls			            #每天2:00整 00 02 1 * * ls  			        #每月1号2:00整 00 02 14 2 * ls	                    #每年2月14号2:00整00 02 * * 7 ls  			        #每周日2:00整 00 02 * 6 5 ls  			        #每年6月的周五2:00整00 02 * * * ls			            #每天2:00整 */5 * * * * ls				        #每隔5分钟 00 02 1,5,8 * * ls		                #每月1,5,8号的2:00整 00 02 1-8 * * ls                    #每月1到8号的2:00整
实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart

使用其他用户创建

[root@xiaoqiang ~]# crontab -u jack -e  #使用jack用户创建
[root@xiaoqiang ~]# crontab -u jack -l  #查看jack用户的计划任务
[root@xiaoqiang ~]# crontab -r  #删除当前用户的计划任务
[root@xiaoqiang ~]# crontab -u jack -r #删除jack用户的计划任务
使用者权限文件:
文件:
/etc/cron.deny
说明:
该文件中所列用户不允许使用crontab命令文件:
/etc/cron.allow(优先级比cron.deny高)
说明:
该文件中所列用户允许使用crontab命令系统本身的计划任务/etc/crontab

日志轮转

审计日志(赚钱)。诊断日志(排错)

日志重要性

Linux系统日志对管理员来说,是了解系统运行的主要途径,因此需要对 Linux 日志系统有个详细的了解。

Linux 系统内核和许多程序会产生各种错误信息、告警信息和其他的提示信息,这些各种信息都应该记录到日志文件中,完成这个过程的程序就是 rsyslog,rsyslog 可以根据日志的类别和优先级将日志保存到不同的文件中。

二、日志系统rsyslog

日志管理基础

rsyslog 日志管理 systemctl status rsyslog #vi /etc/rsyslog.conf
logrotate日志轮转 #1:不希望日志变得太大 2:安全 vim /etc/logrotate.d

**一、处理日志的进程 **

rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron... httpd/nginx/mysql: 可以自己的方式记录日志
[root@xiaoqiang ~]# ps aux |grep rsyslogd
root        752  0.0  0.2 216440  5548 ?        Ssl  20:18   0:00 /usr/sbin/rsyslogd -n日志配置主文件:
/etc/rsyslog.conf 

二、常见的日志文件(系统、进程、应用程序)

#tail -f /var/log/messages		        	#动态查看日志文件的尾部,系统主日志文件#tail -f /var/log/secure		            #记录认证、安全的日志tail /var/log/maillog			            #跟邮件postfix相关tail /var/log/cron			                #crond、at进程产生的日志tail /var/log/dmesg			              	#和系统启动相关tail /var/log/yum.log                       #yum的日志tail -f /var/log/mysqld.log                 #MySQL日志tail /var/log/xferlog                  		#和访问FTP服务器相关/var/log/boot.log                           #系统启动过程日志记录存放[root@xiaoqiang ~]#w					   #当前登录的用户 /var/log/wtmp[root@xiaoqiang ~]#last				   #最近登录的用户 /var/log/btmp
第一列,用户名;
第二列,终端位置,/pts/0 (伪终端)意味着从诸如ssh或者telnet的远程链接的用户,tty(teletypewriter)意味着直接连接到计算机或者本地链接的用户;
第三列,登录的ip或者内核。
第四列,开始时间;
第五列,结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机);[root@xiaoqiang ~]#lastlog			   #所有用户的登录情况 /var/log/lastlog

日志优先级

日志级别分为:7种日志级别代号0-70 debug             #有调试信息的,日志信息最多1 info              #一般信息的日志,最常用2 notice            #最具有重要性的普通条件的信息3 warning           #警告级别4 err               #错误级别,阻止某个功能或者模块不能正常工作的信息5 crit              #严重级别,阻止整个系统或者整个软件不能工作的信息6 alert             #需要立刻修改的信息7 emerg             #内核崩溃等严重信息none                #什么都不记录

三、logrotate日志轮转

什么是日志轮转? 自动切日志
注:可以针对任何日志文件(rsyslog 日志、Nginx访问或错误日志...)
一、logrotate (轮转,日志切割) 
1. 如果没有日志轮转,日志文件会越来越大
2. 将丢弃系统中最旧的日志文件,以节省空间 
3. logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
logrotate 配置文件:
主配置文件:/etc/logrotate.conf (决定每个日志文件如何轮转)
配置日志轮转# vim /etc/logrotate.d 子配置文件[root@xiaoqiang ~]# vim /etc/logrotate.conf	 主配置文件
weekly     			#轮转的周期,一周轮转,单位有年,月,日 
rotate 4			#保留4份 
create				#轮转后创建新文件 
dateext             #使用日期作为后缀 
#compress			#日志轮替时,旧的日志进行压缩 
include /etc/logrotate.d  			 #包含该目录下的配置文件,会引用该目录下面配置的文件/var/log/wtmp {			          	#对该日志文件设置轮转的方法    monthly			                #一月轮转一次  minsize 1M	 #maxsize size		            	#最小达到1M才轮转,否则就算时间到了也不轮转create 0664 root utmp		        #轮转后创建新文件,并设置权限   rotate 2			                #保留2份 
}/var/log/btmp {    missingok			              	#丢失不提示    monthly			                create 0600 root utmp		        rotate 1			                
} 

实战案例

例1:轮转文件/var/log/yum.log[root@xiaoqiang ~]# vim /etc/logrotate.d/yum	   
/var/log/yum.log {missingok                                #丢失不提醒#notifempty                              #空文件不轮转 #size 30k									#只要到了30k就轮转#yearlydaily      y                               #每天轮转一次   rotate 3      create 0644 root root 
}
/logrotate /etc/logrotate.conf	  #手动轮转
测试:logrotate 
[root@xiaoqiang ~]# /usr/sbin/logrotate /etc/logrotate.conf	  #手动轮转
[root@xiaoqiang ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20191110[root@xiaoqiang ~]# grep yum /var/lib/logrotate/logrotate.status #查看记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2019-11-10-21:26:142:日志安全,操作日志的隐藏权限
[root@xiaoqiang log]# cd /etc/logrotate.d/
[root@xiaoqiang logrotate.d]# vim syslog
建议测试时先把/etc/logrotate.d/syslog中messages删除,然后在下面添加如下:
/var/log/messages{prerotatechattr -a /var/log/messagesendscript#notifemptydailycreate 0600 root rootmissingokrotate 3postrotatechattr +a /var/log/messagesendscript
}
[root@xiaoqiang logrotate.d]# /usr/sbin/logrotate /etc/logrotate.conf  #手动轮转
[root@xiaoqiang logrotate.d]# cd /var/log/
[root@xiaoqiang log]# ls mess*
messages  messages-20200805  messages-20200806参数解释:
prerotate/endscript - 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript - 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

作业

1.测试当日期和星期发生冲突的时候以哪个为准,还是取或的关系,全部都执行?
取或。只先执行其中一个
2.计划每星期天早8点服务器定时重启,如何实现?
crontab -e
0 8 * * 0 /usr/bin/reboot
3.某系统管理员需要每天做一定的重复工作,编制一个解决方案:
(1).从下午 4:50 删除/abc 目录下的全部子目录和全部文件;
crontab -e
50 16 * * */usr/bin/rm -rf /abc/*
(2).每逢周一下午 5:50 将/data目录下的所有目录和文件归档并压缩为文件backup.tar.gz;
crontab -e
50 17 * * 1/usr/bin/tar cvzf backup.tar.gz /data 
(3).在早上 8:00 开机后启动crontab。
crontab -e
0 8 0 0 0/usr/bin/systemctl start crond.service

/var/log/messages
endscript
#notifempty
daily
create 0600 root root
missingok
rotate 3

postrotatechattr +a /var/log/messages
endscript

}
[root@xiaoqiang logrotate.d]# /usr/sbin/logrotate /etc/logrotate.conf #手动轮转
[root@xiaoqiang logrotate.d]# cd /var/log/
[root@xiaoqiang log]# ls mess*
messages messages-20200805 messages-20200806

参数解释:
prerotate/endscript - 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript - 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行


**作业**```shell
1.测试当日期和星期发生冲突的时候以哪个为准,还是取或的关系,全部都执行?
取或。只先执行其中一个
2.计划每星期天早8点服务器定时重启,如何实现?
crontab -e
0 8 * * 0 /usr/bin/reboot
3.某系统管理员需要每天做一定的重复工作,编制一个解决方案:
(1).从下午 4:50 删除/abc 目录下的全部子目录和全部文件;
crontab -e
50 16 * * */usr/bin/rm -rf /abc/*
(2).每逢周一下午 5:50 将/data目录下的所有目录和文件归档并压缩为文件backup.tar.gz;
crontab -e
50 17 * * 1/usr/bin/tar cvzf backup.tar.gz /data 
(3).在早上 8:00 开机后启动crontab。
crontab -e
0 8 0 0 0/usr/bin/systemctl start crond.service

更多推荐

07Linux常用命令(软件包安装、定时任务、日志轮转)

本文发布于:2024-03-04 16:06:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709744.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:软件包   常用命令   日志   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!