内容:
-
文件
bin 存放日常最常用的命令
- etc 存放系统管理所需要的配置文件和子目录,这是我们linux系统的神经中枢,它包含所有与系统相关的配置文件
- mnt 让用户临时挂载别的文件系统,这是一个通用的挂载点,可在其中挂载文件系统或设备
sys proc srv 别动
- usr 应用程序和文件系统(如头文件,库)几乎都在这个目录
- dev 把所有的硬件用文件的形式存储
- home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命
- lib 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
- sbin 这里存放的是系统管理员使用的系统管理程序
- temp 这里存放临时文件
- var 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
- boot 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
-
Vim
1)拷贝当前行yy, 拷贝当前行向下的5行 5yy, 并粘贴(输入p)。
2)删除当前行dd, 删除当前行向下的5行5dd
3)在文件中查找某个单词 [命令行下/关键字,回车查找,输入n 就是查找下一个]
4)设置文件的行号,取消文件的行号[命令行下:setnu和:set nonu]
5)编辑/etc/profile文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
6)在一个文件中输入”hello”, 在一般模式下,然后又撤销这个动作 u
7)编辑 /etc/profile文件,在一般模式下,并将光标移动到,输入20 ,再输入shift+g关机重启
1)shutdown-h now 立该进行关机
2)shudown-h 1 “hello,1分钟后会关机了”
3)shutdown-r now 现在重新启动计算机
4)halt 关机,作用和上面一样.
5)reboot 现在重新启动计算机
6)sync 把内存的数据同步到磁盘.用户管理
su* 用户名 命令来切换成系统管理员身份
- 在提示符下输入logout即可注销用户
- 添加用户:useradd 用户名
也可以通过 useradd -d 指定目录 新的用户名—>给新创建的用户指定家目录
- 修改密码 passwd 用户名
- 显示当前用户所在的目录 pwd
- 删除用户但保留目录:userdel 用户名
- 删除用户以及用户主目录: userdel-r 用户名
- 查询用户: id 用户名
- 当需要返回到原来用户时,使用exit/logout指令
- 查看当前用户 who am i
- 增加组 groupadd 组名
- 删除组 groupdel 组名
- 增加用户时直接加上组 useradd -g 用户组 用户名
- 修改用户的组 usermod-g 用户组 用户名
- /etc/passwd文件 记录用户的各种信息 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- /etc/shadow文件 口令的配置文件 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件 组(group)的配置文件,记录Linux包含的组的信息 每行含义:组名:口令:组标识号:组内用户列表
运行级别
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
命令:init[0123456] 通过init来切换不同的运行级别
查看当前级别 systemetl get-default
切换默认级别 systemctl set-default TARGET.target文件目录指令
man获得帮助信息:man[命令或配置文件](功能描述:获得帮助信息) 在linux下,隐藏文件是以.开头,选项可以组合使用比如Is -la || ls -la /root
- help命令(功能描述:获得shell内置命令的帮助信息)
- cd~或者cd:回到自己的家目录,比如你是root,cd~到/root cd..回到当前目录的上一级目录 cd /home/tom/
- 创建一个目录/home/dog mkdir /home/dog 创建多级目录/home/animal/tiger mkdir -p /home/animal/tiger
- rmdir删除的是空目录,如果目录下有内容时无法删除的。如果需要删除非空目录,需要使用rm-rf要删除的目录 比如:rm -rf /home/animal
- touch 创建空文件
- 将/home/hello.txt拷贝到/home/bbb目录下 cp hello.txt /home/bbb 递归复制整个文件夹,比如将/home/bbb整个目录,拷贝到/opt cp* r / home / bbb /opt 强制覆盖不提示的方法:\cp -r /home/bbb /opt
- rm 指令移除文件或目录 -r:递归删除整个文件夹 -f:强制删除不提示
- mv oldNameFile newNameFile(功能描述:重命名) mv /opt/bbb /home(功能描述:移动文件)
- cat只能浏览文件,一般会带上管道命令 |more 。cat -n /etc/profile | more[进行交互] 回车下一行 空格翻页
- more /etc/prpfile
- less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
- echo 使用echo指令输出环境变量,比如输出$PATH $HOSTNAME, echo $HOSTNAME
- head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容 基本语法 head 文件(功能描述:查看文件头10行内容) head -n 5 文件(功能描述:查看文件头5行内容,5可以是任意行数)
- tail 查看/etc/profile最后5行的代码 tail -n 5 /etc/profile 实时监控mydate.txt,看看到文件有变化时,是否看到实时的追加 tail -f /home/mydate.txt
输出重定向 >> 追加
- ln 在/home目录下创建一个软连接myroot,连接到/root目录 In -s /root /home/myroot 删除软连接myroot rm /home/myroot
history 显示所有的历史命令 history 显示最近使用过的10个指令 history 10 执行历史编号为5的指令 !5
时间日期指令
1)date(功能描述:显示当前时间)
2)date+%Y(功能描述:显示当前年份)
3)date+%m(功能描述:显示当前月份)
4)date+%d(功能描述:显示当前是哪一天)
5)date”+%Y-%m-%d%H:%M:%S”(功能描述:显示年月日时分秒)
6)date “+%Y-%m-%d” (显示当前时间年月日)
设置系统当前时间 date -s“2020-11-03 20:02:10”
cal 显示当前日历cal 显示2020年日历:cal2020查找压缩指令
find 按文件名:根据名称查找/home目录下的hello.txt文件 find/home-name hello.txt 按拥有者:查找/opt目录下,用户名称为nobody的文件 find /opt-user nobody 查找整个linux系统下大于200M的文件(+n大于-n小于n等于,单位有k,M,G) find/-size+200M
- ls list ls -l 详细 ls -lh 详细并用人的方式查看
- locate 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。locate hello.txt
- which 指令,可以查看某个指令在哪个目录下,比如 ls 指令在哪个目录 which ls
- grep 过滤查找 写法1:cat /home/hello.txt | grep “yes” 写法2: grep -n “yes” /home/hello.txt -i 忽略大小写
- gzp文件(功能描述:压缩文件,只能将文件压缩为*gz文件) gunzip文件.gz(功能描述:解压缩文件命令)
- zip -r myhome.zip /home/ [将home目录及其包含的文件和子文件夹都压缩] unzip将 myhome. zip解压到/ opt/tmp目录下 unzip -d/opt/tmp /home/myhome. zip
tar 可以打包也可以解压 压缩后原文件存在 -c产生.tar打包文件 -v 显示信息 -f 指定压缩名 -z 打包同时压缩 tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 解压当前目录 tar -zcvf pc.tar.gz 解压到 tar -zcvf /home/myhome.tar.gz -C /opt/temp2
所有者,所在组,权限
ls -ahl 或者 ll 查看文件所有者
- chown 用户名 文件名 修改文件所有者
- chgrp 组名 文件名 修改文件组
- usermod -g 新组名 用户名 改变用户所在组
- usermod -d 目录名 用户名 改变用户登录的初始目录
- 第0位确定文件类型(d,-,c,b)
- ‘- ‘是普通文件
- l 是链接,相当于 windows的快捷方式
- d 是目录,相当于 windows的文件夹
- c 是字符设备文件,鼠标,键盘
- b 是块设备,比如硬盘
数字指的是该目录下文件+1
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
- 第4-6位确定所属组(同用户组的)拥有该文件的权限,- . Group
- 第7-9位确定其他用户拥有该文件的权限— Other
- rwx作用到文件上
1)[r]代表可读(read):可以读取,查看
2)[w]代表可写(wite):可以修改,但是不代表可以删除该文件删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
3)[x]代表可执行( execute)可以被执行
- rwx作用到目录上
1)[r]代表可读(read):可以读取,ls查看目录内容
2)[w]代表可写( write):可以修改,对目录内创建+删除+重命名目录
3)[x]代表可执行( execute):可以进入该目录
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
- 修改权限
1) chmod u=rwx,g=rx,o=rx文件/目录名 chmod u=rwx,g=rx,o=rx hello.txt
2)chmod o+w 文件/目录名 chmod g+w,u-x hellw.txt
3)chmod a-x 文件/目录名
- 修改所有者和所在组
1)chown newowner 文件/目录 改变文件所有者
2)chgrp newgroup 文件/目录 改变文件所在组 chgrp shaolin /home/abc.txt
3)chown newowner: newgroup 文件/目录 改变所有者和所在组
R 如果是目录则使其下所有子文件或目录递归生效 chown -R tom /home/test chgrp -R shaolin /home/test
cornb
crontab -e 编辑任务 -i 查询任务 -r 删除当前用户所有任务 -l 列出任务 在etc下 /1 * ls -l /etc/ > /temp/to,txt
第一个 一小时当中的第几分钟 0-59
第二个 一天当中的第几小时 0-23
第三个 一个月当中的第几天 1-31
第四个 一年当中的第几月 1-12
第五个 一周当中的星期几 0-7(0和7都代表星期日)
- 特殊符号含义
- 代表任何时间。比如第一个“”就代表一小时中每分钟都执行一次的意思。
- ,代表不连续的时间。比如“0 8,12,16 * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- -代表连绩的时间范围。即如“0 5 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
- /n代表每隔多久执行一次。比如“/10**命令”,代表每隔10分钟就执行一遍命令
案例:每隔1分钟,将当前日期和日历都追加到/home/myea文件中
(1)vm /home/mysh写入内容 date>/ home/mycal 和 cal>/home/ mycal
(2)给mysh增加执行权限, chmod u+x/ home/my.sh
(3) crontab -e增加 /1 * /home/mysh
at 任务调制
- ps -ef | grep atd 可以检测atd是否在运行
- at命令格式 at[选项][时间] Ctrl+D结束at命令的输入,输出两次 atq来查询任务 atrm 编号 删除任务
- at指定时间的方法:
1)接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00
2)使用 midnight(深夜),noon(中午), teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
3)采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm
4)指定命令执行的具体日期,指定格式为 month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-01
5)使用相对计时法。指定格式为:now+ count time- units, now就是当前时间,time- units是时间单位,这里能够是 minutes(分钟)、 hours(小时)、days(天)、 weeks(星期)。 count是时间的数量,几天,几小时。例如:now+5 minutes
硬盘
- lsblk 或者 lsblk -f 查看所有设备挂载情况
- 如何增加一块硬盘
1)虚拟机添加硬盘
2)分区
分区命令 fdisk /dev/sdb
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区同 fdisk -l
n 新增分区
d 删除分区
w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
3)格式化
分区命令: mkfs -t ex4/dev/sdbl 其中ext4是分区类型
4)挂载
挂载:将一个分区与一个目录联系起来 mount设备名称 挂载目录 例如: mount /dev/sdb1 /newdisk 卸载umount /dev/sdb1 用命令行挂载重启后会失效
5)设置可以自动挂载
永久挂载:通过修改vim /etc/fstab实现永久挂载 添加完成后执行 mount-a即刻生效
- du -h 查看磁盘使用情况基本语法 du -hac —max-depth=1 /opt
- -s 指定目录占用大小汇总
- -h 带计量单位
- -a 含文件
- —max-depth=1 子目录深度
- -c 列出明细的同时,增加汇总值
1)统计/opt文件夹下文件的个数 Is -l /opt | grep”^-“ | wc -l
2)统计/opt文件夹下目录的个数 Is -l /opt | grep “^d” | wc -l
3)统计/opt文件夹下文件的个数,包括子文件夹里的 ls -lR /opt | grep “^d” | wc -l
4)统计/opt文件夹下目录的个数,包括子文件夹里的 Is -IR /opt | grep “^d” | wc -l
5)以树状显示目录结构tree目录,注意,如果没有tree,则使用 yum install tree安装
网络配置
- 查看网络配置 ifconfig windows ipconfig
- ping 目的主机 看看是否相通
- 指定ip方法:
1)编辑 vi/etc/sysconfig/network-scripts/ifcfg-ens33
2)要求:将ip地址配置的静态的,比如:ip地址为192.168.200.130
3)iffy-ens33文件说明
DEVICE=eth0 #接口名(设备,网卡)
HWADDR=00:0C:2x:6x:0x:xx #MAC地址
TYPE=Ethernet #网络类型(通常是 Ethemet)
UUID=926a57ba-92c6-423 1-bacb-f27e5e6a9f44 #随机 id
4)系统启动的时候网络接口是否有效(yes/no) ONBOOT=yes
5)IP的配置方法 none | static | bootp | dhcp(引导时不使用协议态分配 IP BOOTP协议DHCP协议)
BOOTPROTO=Static
6)P地址
IPADDR=192.168.200.130
7)网关
GATEWAY=192.168.200.2
8)域名解析器
DNSl=192.168.200.2
更改vmnet8 和 网关处于相同网段 xhell 同样要更改
DNS
ipconfig /displaydns DNS域名解析缓存
ipconfig /flushdns 手动清理dns缓存
ps指令
ps -aux | grep xxx 比如我看看有没有sshd服务
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
ps -ef是以全格式显示当前所有进程 ps -ef | grep sshd
终止进程
kill [选项]进程号 killall 进程名称 重启 sshd /bin/systemctl start sshd.service 强制关闭 kill -9 10487
查看进程树 pstree -p 显示进程PID -u 显示进程所属用户
服务管理
守护进程-后台进程-服务
service 服务名 [start | stop | restart | reload | status]
setup 查看服务 带*会自己启动
Linux系统有7种运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:Ⅹ11控制台,登陆后进入图形GUⅠ模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别在/etc/initab下设置 systemctl -get-default查看 systemctl -set-default .target设置
- chkconfig 给服务的各个运行级别设置自启动/关闭 chkconfig —list chkconfig —level 5 服务名 on/off 重启生效
systemtm[start | stop | restart | status]服务名
systemc指令管理的服务在/usr/lib/ systemd/system查看
systemctl list-unit-files | grep服务名
systemctl enable服务名(设置服务开机启动)
systemctl disable服务名(关闭服务开机启动)
systemctl is-enabled服务名(查询某个服务是否是自启动的)
打开端口: firewall-cmd —permanent —add-port=端口号/协议(111/tcp)
关闭端口: firewal-cmd —permanent —remove-port=端口号/协议
重新载入,才能生效: firewall-cmd —reload
查询端口是否开放: firewall-cmd —query-port=端口/协议
top[选项] 可以实时跟新进程 -d 秒数 指定top命令每隔几秒更新。默认是3秒 -i 使top不显示任何闲置或者僵死进程。 -p 通过指定监控进程ID来仅仅监控某个进程的状态。
-p 以CPU使用率排序,默认就是此项 -M 以內存的使用率排序 -N 以PID排序 q 退出top
监视特定用户,比如我们监控tom用户 top:输入此命令,按回车键,查看执行的进程 然后输入u回车,再输入用户名,即可,
终止指定的进程,比如我们要结束tom登录 输入top此命令,按回车键,查看执行的进程 然后输入“k”回车,再输入要结束的进程号 输入9 强制退出
指定系统状态更新的时间每隔10秒自动更新,默认是3秒top -d 10
netstat[选项] 查看系统网路情况 -an 按一定顺序排列输出 -p 显示哪个进程在调用 查看sshd netstat -anp | grep sshd
rpm管理
rpm 查询已安装rpm列表 rpm -qa | grep firefox 查询所有 rpm -qa | more
查询是否安装 rpm -q firefox 查询软件包信息 rpm -qi firefox
查询包中软件 rpm -ql firefox 查询文件所属软件包 rpm-qf/etc/passwd
卸载软件包 rpm -e firefox 强制卸载rpm -e —nodeps firefox
安装rpm -ivh RPM包全路径名称 默认在安装在路径下 安装后再移动
yum 查询服务器是否有需要安装的软件 yum list | grep xx 安装 yum install xxx
shell
-shell脚本 脚本以#!/ bin/bash开头 脚本需要有可执行权限 chown u+x /root/hello.sh
显示当前shell中所有变量:set
* 基本语法
定义变量:变量名=值
撤销变量: unset变量
声明静态变量: readonly变量 , 注意 : 不能 unset
输出变量需要加上 $ 不然以为的是单词
多行注释: :<<! !
等号两侧不能有空格
变量名称一般习惯为大写,这是一个规范,我们遵守即可
将命令的返回值赋给变量 A=date
反引号,运行里面的命令,并把结果返回给变量A A=$(date)等价于反引号
- 设置环境变量:
export 变量名=变量值(功能描述:将 shell变量输出为环境变量/全局变量)
source配置文件 (功能描述:让修改后的配置信息立即生效)
echo$变量名 (功能描述:査询环境变量的值)
在 etc/profile文件中定义环境变量
位置参数:
$ n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
$ (功能描述:这个变量代表命令行中所有的参数,$把所有的参数看成一个整体)
$ @(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$ #(功能描述:这个变量代表命令行中所有参数的个数)预定义变量
$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号(PID))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
以后台的方式运行一个脚本,并获取他的进程号/root/shcode/myshell.sh & echo”最后一个后台方式运行的进程id= $!”
运算符语法 $[运算式] RES2= $[(2+3)*4] echo”res2= $RES2”
- if 条件判断 [ condition ]注意 condition前后要有空格[ ]空的话要有个空格
非空返回true,可使用$?验证(0为true,>1为false)
1)=字符串比较
2)两个整数的比较 -lt小于 -le小于等于 -eq等于 -gt大于 -ge大于等于 -ne不等于
3)按照文件权限进行判断 -r有读的权限 -w有写的权限 -x有执行的权限
4)按照文件类型进行判断 -f文件存在并且是一个常规的文件 -e文件存在 -d文件存在并是一个目录
powershell
if [ "ok" = "ok" ]
then
echo "equal"
fi
powershell
if [ $1 -ge 60 ]
then
echo "及格"
elif [ $1 -lt 60 ]
then
echo"不及格"
fi
- case语句
powershell
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
- for循环
powershell
for j in "$@"
do
echo "num is $j"
done
powershell
SUM=0
for(( i=1; i<=$1; i++))
do
SUM=$[$SUM+$i]
done
echo "总合SUM=$SUM"
- while 循环
powershell
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+Si]
i=$[$i+1]
done
echo"执行结果=$SUM"
注意: while 和 [有空格,条件判断式和 [ 也有空格
- read读取控制台输入 -p: 指定读取值时的提示符 -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
read -t 10 -p”请输入一个数NUM2=” NUM2
- 函数
basename基本语法 功能:返回完整路径最后人的部分,常用于获取文件名
dirname基本语法 功能:返回完整路径最后/的前面的部分,常用于返回路径部分
powershell
#定义函数 getSum
function getSum() {
SUM=$[$n1+$n2]
echo"和是=$SUM"
}
read -p "请输入一个数nl=" n1
read -p "请输入一个数n2=" n2
#调用自定义函数 getSum $n1 $n2
Shell编程综合案例
1)每天凌晨2:30备份数据库 hspedu到/ data/backup/db
2)备份开始和备份结束能够给出相应的提示信息
3)备份后的文件要求以备份时间为文件名,并打包成 tar. gz的形式,比如:2021-03-1223020 1. tar. gz
4)在备份的同时,检査是否有10天前备份的数据库文件,如果有就将其删除
powershell
#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=S(date +%Y-%m-%d %H:%M:%S)
echo $DATETIME
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=hspedu100
#备份的数据库名
DATABASE=hspedu
#创建备份目录,如果不存在,就创建
[ ! -d "${BACKUP}/${DATETIME)" ]&& mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成 tar. gz
cd ${BACKUP}
tar-zcvf $DATETIME.tar.gZ ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz"-exec rm-rf {} \;
echo"备份数据库${ DATABASE}成功"
日志
var/og目录就是系统日志文件的保存位置
/var/log/boot.log 启统启动日志
/var/log/cron 记录与系统定时任务相关的日志
/var/log/cups/ 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信总。也可以使用 dmesg命令直接查看内核自检信息
/var/log/btmp 记录错误登陆的日志。这个文件是二进制文件,不能直接用vi查看,而要使用lastb命令查看。命令如下
[root@localhost log]#lastb
var/log/lasllog 记录系统中有用户最后一次的登录时呵的日志这个文件也是二进制文件要使用lastlog命今查看
/var/log/mailog 记录邮件信息的日志
/var/log/message 记录系统重要消息的日志这个日志文件中会记录 Linux系统的绝大多数重要信息。如果系统出现问题,首先要检查的应该就是这个日志文件
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。是二进制文件而要使用last命令
*/var/tun/ump 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息
这个文件不能用Vi查看,而要使用w、who、 users等命令查看
rsyslog
- rsyslog:
查询 Linux中的 rsyslog服务是否启动 ps aux | grep “rsyslog” | grep-v “grep”
查询 rsyslog服务的自启动状态 systemctl list-unit-files | grep rsyslog
配置文件: /etc/rsyslog. conf
编辑文件时的格式为. 存放日志文件 其中第一个代表日志类型,第二个代表日志级别
- 日志类型分为:
auth #pam产生的日志
authpriv ##ssh、ftp等登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog #服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp # unix to nuix copy主机之间相关的通信
local 1-7#自定义的日志设备
- 日志级别分为:
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少
* 日志轮替:
文件命名:centos7使用 logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate·conf配置文件中”dateext”参数
logrotate配置文件:
/var/log/wtmp{
monthly #每月对日志文件进行一次轮替
create 0664 root utmp #建立的新日志文件,权限是0664,所有者是root,所属组是utmp组
minsize 1M #日志文件最小轮替大小是1MB。也就是日志一定要超过IMB才会轮替,否则就算时间达到
个月,也不进行日志转储
rotate 1 #仅保留一个日志备份。也就是只有wtmp和wtmp.1日志保留而已
}
- 参数说明:
daily 日志的轮替周期是每天
weekly 日志的轮替周期是每周
monthly 日志的轮替周期是每月
rotate 数字 保留的日志文件的个数。0指没有备份
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组
mail address 当日志轮替时,输岀内容通过邮件发送到指定的邮件地址,
missingok 如果日志不存在,则忽略该日志的警告信息
notifempty 如果日志为空文件,则不进行日志轮替
minsize 大小 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替
sIze 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替
dateext 使用日期作为日志轮替文件的后缀
sharedscripts 在此关键字之后的脚本只执行一次
prerotate/endscript 在日志轮替之前执行脚本命令
postrotate/endscript 在日志轮替之后执行脚本命令
- 加入自己的日志:
第一种方法是直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略
第二种方法是在/etc/ logrotate. d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“ include”到主配置文件中,所以也可以把日志加入轮替。
- 查看内存日志:
journalctl 可以查看内存日志
journalctl ##查看全部
journalctI -n 3#查看最新3条
journalctl —since19:00 —until 19:10:10#查看起始时间到结束时间的日志可加日期
journalctl -p err#报错日志
journalctl -o verbose ##日志详细内容
journalct_PID=1245 _COMM=sshd##查看包含这些参数的日志(在详细日志查看)
或者 journalctl | grep sshdne
内核升级
- 内核升级:
uname -a//查看当前的内核版本
yum info kernel -q/检测内核版本,显示可以升级的内核
yum update kernel//升级内核
yum list kernel -q//查看已经安装的内核
登录界面可以选2个 新版是继承了的
备份和恢复
备份和恢复如果
linux上没有dump和 restore指令
yum-y install dump
yum-y install restore
dump[ -cu] [-123456789] [-f<备份后文件名>] [-T<日期>] [目录或文件系统]
dump []-wW
-c: 创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
-0123456789: 备份的层级。0为最完整备份,会备份所有文件。若指定0以上的层级,则备份至上一次备份以来修改或新增的文件,到9后,可以再次轮替
-f<备份后文件名>:指定备份后文件名
-j :调用bzlib库压缩备份文件,也就是将备份后的文件压缩成bz2格式,让文件更小
-T<日期>: 指定开始备份的时间与日期
-u: 备份完毕后,在letc/ dumpdares中记录备份的文件系统,层级,日期与时间等。
-t: 指定文件名,若该文件已存在备份文件中,则列出名称
-W:显示需要备份的文件及其最后一次备份的层级,时间,日期
-w与-W类似,但仅显示需要备份的文件
将/boot分区所有内容备份到/ opt/boot bako. bz2文件中,备份层级为“0”
dump -0uj -f/opt/boot bakO.bz2 /boot
查看备份时间文件 cat/etc/dumpdates
只有分区支持增量备份
* restore [模式选项][选项]
说明下面四个模式,不能混用,在一次命令中,只能指定一种
-C:使用对比模式,将备份的文件与已存在的文件相互对比
-i: 使用交互模式,在进行还原操作时, restors指令将依序询问用户
-r: 进行还原模式(通常)
-t: 查看模式,看备份文件有哪些文件
restore-C -f boot.bak1.bz2 //注意和最新的文件比较
restore命令还原模式,注意细节:如果你有增量备份,需要把増量备份文件也进行恢复,有几个增量备份文件,就要恢复几个,按顺序来恢复即可