【SRE笔记 2022.8.17】
Linux中的乐趣
跑火车
- 1 能上网
- 2 配置好epel源
- 3 安装sl
- 4 执行
重要配置文件(接上期笔记)
8 配置用户登录系统之后显示提示内容的文件
- /etc/motd
- 该文件是空文件,可输入内容。
[root@aaa ~]# echo "你好" > /etc/motd
[root@aaa ~]# cat /etc/motd
你好
- 重新登录系统后
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Wed Aug 17 17:48:17 2022 from 10.0.0.1
你好 # motd文件内容
[root@aaa ~]#
9 声明Red Hat版本号和名称信息的文件
- /etc/redhat-release
[root@aaa ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@aaa ~]# uname -r # 查看内核 查看所有 uname -a
3.10.0-1160.71.1.el7.x86_64
10 Linux参数配置文件
- /etc/sysctl.conf(系统优化)
[root@aaa ~]# cat /etc/sysc
sysconfig/ sysctl.conf sysctl.d/
[root@aaa ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
- 配置完毕,sysctl -p 生效。
11 配置系统的环境变量/别名等的配置文件
- /etc/profile、/etc/bashrc。
如PS1变量
/usr目录介绍
1 /usr/local
- 编译安装软件默认的位置路径
- 相当于windows的c:\programe files。
2 /usr/src
- 程序源代码目录
/var目录
1 /var/log/message
- linux系统日志文件,查询系统故障。
[root@aaa log]# tail -5 messages
Aug 17 18:16:38 aaa nm-dispatcher: req:1 'dhcp4-change' [eth0]: new request (2 scripts)
Aug 17 18:16:38 aaa nm-dispatcher: req:1 'dhcp4-change' [eth0]: start running ordered scripts...
Aug 17 18:18:43 aaa systemd: Starting Cleanup of Temporary Directories...
Aug 17 18:18:43 aaa systemd: Started Cleanup of Temporary Directories.
Aug 17 18:20:01 aaa systemd: Started Session 3 of user root.
2 /var/log/secure:安全日志(ssh日志记录)
- 该日志需要监控。
-ssh登录失败,成功等,以登陆失败查询日志如下
[root@aaa log]# tail -f 5 secure
tail: cannot open ‘5’ for reading: No such file or directory
==> secure <==
Aug 17 18:28:47 aaa sshd[2202]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 17 18:28:49 aaa sshd[2202]: Failed password for root from ::1 port 45544 ssh2
Aug 17 18:28:50 aaa unix_chkpwd[2205]: password check failed for user (root)
Aug 17 18:28:50 aaa sshd[2202]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 17 18:28:52 aaa sshd[2202]: Failed password for root from ::1 port 45544 ssh2
Aug 17 18:28:52 aaa unix_chkpwd[2206]: password check failed for user (root)
Aug 17 18:28:52 aaa sshd[2202]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 17 18:28:54 aaa sshd[2202]: Failed password for root from ::1 port 45544 ssh2
Aug 17 18:28:54 aaa sshd[2202]: Connection closed by ::1 port 45544 [preauth]
Aug 17 18:28:54 aaa sshd[2202]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=localhost user=root
3 /var/log/dmesg
- 记录硬件信息加载情况的日志文件,也可通过dmesg命令查看。
、、
[root@aaa log]# dmesg | head -5
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.0-1160.71.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Jun 28 15:37:28 UTC 2022
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap biosdevname=0 net.ifnames=0 rhgb quiet LANG=en_US.UTF-8
[root@aaa log]# head -5 dmesg
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.0-1160.71.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Jun 28 15:37:28 UTC 2022
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap biosdevname=0 net.ifnames=0 rhgb quiet LANG=en_US.UTF-8
/proc目录
- 进程和内核信息的文件
- 1 /proc/cpuinfo :cpu信息
- 2 /proc/meminfo:内存信息
- 3 /proc/loadavg:系统的平均负载
- 4 /proc/mounts:设备挂载明细
- 5 /proc/interrupts:系统中断信息
/dev目录
- /dev/sda 磁盘信息
- /dev/null 黑洞
- /dev/zero 无限零资源
cp命令
- cp -r 复制目录,单cp只能复制文件
- cp -p 保持属性
- cp -a (a包括d p r三个参数),d代表设备。
- cp -t 目标 源(源和目的调换)
- mv 的用法和cp类似
- rm 删除目录或文件 rm -rf 强制删除, rm -r 删除目录(递归删除)
/tmp目录
-临时文件目录,可以当做回收站。
-不要全路径删除文件
文件内容编辑命令vi&vim
vi
- 用法同VIM。
vim
- vim需要安装。
yum install -y vim-enhanced
vim的三种模式
普通模式
- vim打开文档即进去普通模式,在普通模式下按u撤销。
编辑模式
- 按"i/I a/A o/O"进入编辑模式,按Esc回到普通模式
- i 在当前光标所在位置插入文字
- A 在当前光标所在行尾最后一个字符处开始插入文件,和I相反
- I 在当前光标所在行首最后一个非空字符处开始插入文件,和A相反
- O 在当前所在行的上一行出入新的一行。
- o 在当前所在行的下一行出入新的一行。
- 命令模式:输入“ :、/、? ”后,可输入w(保存),q(退出)!(强制)。按esc回到普通模式。
- 命令模式下
- :set nu 显示行号
- :set nonu 取消行号
vim的快捷键
移动光标
- G 跳转到文件结尾行首字母
- gg 跳转到文件首行首字母
- $ 跳转到行尾
- 0 跳转到行首
- ngg 跳转到第n行首
- n【按回车】移动n行
- H 跳转到首行首字母
- M 跳转到中间行首字母
- L 跳转到结尾行首字母
搜索
- /内容 向下搜索,此时按n是跳转到下一个内容,N是跳转到上一个内容。
- ?内容 向上搜索,此时按n是跳转到下一个内容,n是跳转到上一个内容。
替换
- %s/A/B/g,把A替换成B,(s 为替换,g为globe)
- 如果A或B中有斜线,此时可把分割的斜线换成#或@。
- 替换部分内容
- :n1,n2s/A/B/g,替换n1到n2行,寻找A替换B。,如果替换内容中包含/,可用#或@替换。
复制粘贴,删除
- yy 复制当前行
- nyy 复制从当前开始的n行(包括当前行)
- p 粘贴(粘贴到当前行的下一行)
- P粘贴(粘贴到当前行的上一行)
- dd 删除当前行
- ndd 删除 删除从当前行开始的n行
- x 删除光标后字符
- X删除光标前字符
- d1G 删除当前行至第一行
- dG 删除当前行至最后一行 按回车
- d0 删除当前光标文本至行首
- d$ 删除当前光标文本至行尾
- 在编辑文件的同时,定位到某一行
[root@aaa ~]# vim aaa.txt +22 #定位到22行
查看命令cat
- cat -n 查看的时候显示行号。
[root@aaa ~]# cat -n aaa.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
输入内容打印内容命令 echo
- echo + 内容 内容可加单引号或双引号,也可不加。连续执行命令用分号来分割。
[root@aaa ~]# echo 123 ; echo 333
123
333
- echo -n 不换行
[root@aaa ~]# echo -n 123 ; echo 333
123333
- echo -e 支持转义字符
- \n 相当于换行
[root@aaa ~]# echo "big\nsmall"
big\nsmall
[root@aaa ~]# echo -e "big\nsmall"
big
small
- \t 相当于tab
[root@aaa ~]# echo "big\tsmall"
big\tsmall
[root@aaa ~]# echo -e "big\tsmall"
big small
more/less 查看命令
- less -N 显示行号。
head命令
- 默认查看头10行
- head -n 显示开头n行
[root@aaa ~]# head -n 5 aaa.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
tail命令
- tail -n 显示结尾n行
- tail -f 动态、实时的跟踪文件尾部的变化,
grep命令
- grep [选项] 内容 文件
[root@aaa ~]# grep root aaa.txt # 过滤含有root字符串的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
–color-auto 过滤的内容显示颜色
参数 -v 取反
[root@aaa ~]# grep -v root aaa.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
参数 -i不区分大小写
[root@aaa ~]# grep -i root aaa.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
参数 -E 同时过滤多个字符串 grep -E = egrep
[root@aaa ~]# grep -E "daemon|root" aaa.txt (grep -E 也可替换为egrep)
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
参数-o,只输出匹配的内容
如果过滤字符串aaa,则只会显示aaa,
[root@aaa ~]# grep -o Nobody aaa.txt
Nobody
参数-n过滤出的内容,在文件中的行号
[root@aaa ~]# grep -n Nobody aaa.txt
13:nobody:x:99:99:Nobody:/:/sbin/nologin
特殊注意
[root@aaa ~]# grep -n "." aaa.txt # 此处的.代表任意字符 该命令能实现cat -n的效果。
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
参数 -w 按单词过滤**
注意是按单词!
序列
中括号序列
{1…10} {a…z} {A…Z}
seq命令 数字序列
[root@aaa ~]# seq 2 5
2
3
4
5
- 指定空格为分隔符,类似echo的形式
[root@aaa ~]# seq -s " " 5
1 2 3 4 5
[root@aaa ~]# echo {1...5}
{1...5}
-w 参数
[root@aaa ~]# seq -w -s " " 11 # 序列要大于10。
01 02 03 04 05 06 07 08 09 10 11