运维常规知识点查漏补缺记录

发布时间 2023-11-23 23:13:50作者: wushaoyu

1.rpm -qa 列出所有已安装的rpm包

  rpm -qf  /path/command 查询一个命令有什么包提供的

 rpm -ql  包名 列出安装的rpm包装了哪些目录及文件

2、宿主机采用了CST时区,CST应该是指(China Shanghai Time,东八区时间)

容器采用了UTC时区,UTC应该是指(Coordinated Universal Time,标准时间)
3、查看cpu、内存/占用进程
[root@localhost ~]# ps aux|head -1;ps aux|sort -rn -k3|head -10
ps:第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)信息
       sort命令,其中:r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。n指代numberic sort,根据其数值排序。k代表根据哪一列进行排序,后面的数字3表示按照第3列排序。本例中,可以看到%CPU在第3个位置,因此k3表示根据%CPU的数值进行由大到小的排序。
4、常用mail命令
1)普通发邮件选项:
echo ”内容“ | mail -s ”标题”  收邮件人邮箱
2)发邮件时指定发件人
选项:--f 发件人邮箱 -F 发件人姓名
 mail -s "just a test" 收信人邮箱地址 < 要发送的邮件内容文件 -- -f 发送人邮件地址 -F 发件人姓名
5、windows文件共享
问题:登陆一次共享文件后,再次登陆不用输入用户名密码的问题
C:\Users\Administrator>net use                              //查看已经连接的记录

C:\Users\Administrator>net use * /del     /y       //删除这些已有记录

再次指定共享目录的用户名及密码,直接写死

C:\Users\Administrator>net use \\192.168.10.85\债券组 888888 /user:xxx 

 6、ls命令统计大小及按时间排序

ls -lt  按时间顺序排列

ls -lh  以GB为单位显示文件大小

-h:统计文件大小

-t:按时间顺序排列,最新的最上面

-A:查看隐藏文件

-R:递归显示当前目录下的目录的所有文件 

-S:以文件大小排序(升序和降序)#默认降序排序          #通过-r参数实现升序排列

7、grep的用法

-w:精确匹配,查找什么就只找什么,不显示包含查找内容的结果

-q        不显示任何信息

-n:顺便输出所在行号

-A:取到关键字后打印前几行

-B:取到关键字后打印后几行

grep "pmon|smon|dbw|lgwr|"  #一次过滤过个内容

1. grep -A 1 keyword filename

找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行。其中,数字可以变。

2. grep -B 1 keyword filename

找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行。其中,数字可以变。

例:sed -n "$[$BEGIN_LINE-10],$END_LINE p" $PWD|grep  -A 3 -B 10 'ORA-'>.mailinfo

8、gzip压缩
压缩:gzip *
解压:gzip -d  *.gz(保留原来的gz包)
gzip -dv *.gz(解压后的包,会替换掉原来的gz包)
 
9、wc命令统计文件
  不加选项,默认输出显示未:行数、单词数、字节数
[root@localhost ~]# cat  wsy.txt
aaa
bbb
cccdfaf
fasdfsdfasdf
[root@localhost ~]# wc wsy.txt
 4  4 29 wsy.txt

 10、echo输出换行、不换行

[root@kf_test ims_test_node58]# echo -e "abc\n";echo aaa
abc

aaa
[root@kf_test ims_test_node58]# echo -e "abc\c";echo aaa
abcaaa

 
11、while循环
1)死循环
while:
do
done
2)while read  line
do
done < $变量(要读入的内容)把读入的内容赋值给变量line,逐行读取赋值
 
12、若需要安装已经安装的rpm包,会报错,需要添加--replacefiles选项
   软件包重复安装将会失败,若仍需要安装必须加 --replacepkgs 属性
   软件包的某个文件已在安装其他软件包时安装过,则安装将会失败,若仍需要安装必须加 --replacefiles 属性
例:
[root@tycdb41 ~]# rpm -ivh --replacepkgs openssl-1.0.0-27.el6.x86_64.rpm
 
13.pl/sql用sql语句查完显示?号乱码,需在自己电脑添加中文支持
变量名为:NLS_LANG   变量值为:AMERICAN_AMERICA.ZHS16GBK 
变量名为:LANG             变量值为:zh_CN.GBK
 
14、basename和dirname
basename用法:
         basename 去除文件名的目录部分和后缀部分。返回一个字符串参数的基本文件名称
[root@test1 ~]# basename /home/me/desktop/test.txt
输出:
[root@test1 ~]# test.txt
 
dirname用法:
         Linux下获得目录路径比较常用的是pwd命令和getcwd()函数了,但是如果文件不在当前目录下,要获取文件目录就不能用pwd了。
    若路径中没有'/',则输出'.'(当前目录)

[oracle@localhost admin]$ dirname tnsnames.ora
.

[oracle@localhost admin]$ dirname $ORACLE_HOME/admin/network/tnsnames.ora
/opt/oracle/product/11.2.0/dbhome_1/admin/network

 

15、时间同步

ntpdate ntp1.aliyun.com

 

16、nohup命令相关解释

https://www.cnblogs.com/zq-inlook/p/3577003.html

 

17、shell中几个括号的用法

  1、 $( )和反引号一样,都是命令替换,去命令的结果

  2、$(( ))$[ ]用法一致,都是用于算数运算

  3、双小括号 (( ))命令允许在比较过程中使用高级数学表达式

常使用的双小括号来在 for 循环中实现 C 语言风格的迭代:
#!/bin/bash
for ((i = 0; i < 10; i++))
do
    echo -n "$i "
done
echo ""
exit 0

  4、中括号 [ ]单个的中括号的功能与 test 命令一样,都是用作条件测试。

#!/bin/bash
read -p "please enter a number: " num
if [ $num -gt 10 ]; then
    echo "num > 10"
else
    echo "num <= 10"
fi

  5、双中括号 [[ ]]

     双中括号提供了针对字符串比较的高级特性,使用双中括号 [[ ]] 进行字符串比较时,可以把右边的项看做一个模式,故而可以在 [[ ]] 中使用正则表达式:

#!/bin/bash
if [[ hello == hell* ]]; then
    echo "equal"
else
    echo "unequal"
fi
exit 0
pid="123"
[ -z "$pid" ] 单对中括号变量必须要加双引号
[[ -z $pid ]] 双对括号,变量不用加双引号
 
[ -n "$pid" ] 单对中括号,变量必须要加双引号
[[ -z $pid ]] 双对中括号,变量不用加双引号

可参考连接:

https://blog.csdn.net/keep_lcm/article/details/80551435

 

18、反斜杠 \

   反斜杠的作用是将特殊符号字符的特殊含义屏蔽掉,使其还是原字符 

A=1234 
echo \$A 显示为$A 如果不加\将显示为1234 
echo \` 显示为` 
echo \" 显示为双引号 
echo \\ 显示为\ 

19、二进制文件需用strings命令来查看,例:

oracle的初始参数文件spfile<$ORACLE_SID>.ora:  strings spfile<$ORACLE_SID>.ora

20、发邮件时可在邮件内容之前加上自己需要的内容

  例:在邮件内容之前加入邮件信息、IP,主机名等内容

[root@myoracle ~]# echo -e "this is a test message\nip:192.168.214.111\nhostname:myoracle\n`cat /home/oracle/2019-06-21.log`" |mail -s 'mail' wushaoyu@ccxe.com.cn    #\n为换行符,一个为一个行

 

 21、若服务器没有交换分区,可以创建交换分区

例:阿里云主机没有swap分区,可以用dd命令来创建

[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# dd if=/dev/zero of=/var/var.swap bs=1M count=4096  #指定创建文件的路径及名称,最终大小为bs和count的乘积

[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# dd if=/dev/zero of=/var/var.swap bs=1M count=4096  #M必须大写
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 38.5397 s, 111 MB/s
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# mkswap /var/var.swap    #创建交换分区
mkswap: /var/var.swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=0bde52c7-852b-4f07-b4e2-f700b2eb1eec
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        926         69        266         34        414
-/+ buffers/cache:        477        518
Swap:            0          0          0
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# swapon /var/var.swap   #启用交换分区功能
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        929         66        266         34        414
-/+ buffers/cache:        480        515
Swap:         4095          0       4095

可将其写入开机自动挂载的配置文件,服务器重启依然有效:

[root@iZ2ze6rm1auwacy4tk6ucaZ ~]#echo "/var/swap swap swap defaults 0 0" >> /etc/fstab

关闭交换分区:

[root@iZ2ze6rm1auwacy4tk6ucaZ ~]#swapoff /var/var.swap

22、搜索进程,与则kill,没有则会报错,加选项--no-run-if-empty,没有则执行kill

netstat -n|grep 1520|grep -v grep |xargs --no-run-if-empty kill

23、tee命令

常用参数:

1)格式:tee file

输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。

2)格式:tee -a file

输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

3)格式:tee -

输出到标准输出两次。

4)格式:tee file1 file2 -

输出到标准输出两次,同时保存到file1和file2中。

24、wget命令

1)下载文件 到指定目录:(若下载到当前目录则不需要-P选项)

    wget -P 指定目录 下载地址

例:
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# wget -P /root/soft  http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

2)下载文件,将其写入到指定文件

例:
[root@iZ2ze6rm1auwacy4tk6ucaZ ~]# wget  https://www.cnblogs.com/ftl1012/p/9265699.html -O  /root/message.html

3)wget -0   filename   filename (把什么文件下载到什么路径,另存为什么名字)

[root@redhat yum.repos.d]#  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

25、curl命令

[root@redhat yum.repos.d]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo

curl -o 访问什么,然后将其写入那个文件中

 

26、readlink命令

    根据脚本名称,获取脚本的绝对路径或

[admin@data01-001 memsql]$ readlink -f install.sh(或dirname install.sh)

/data/infra/memsql/install.sh

 

27、linuxl连接终端超时自动断开连接

[root@ecs-3366 ~]#vim /etc/profile
TMOUT=180   //以秒为单位
export TMOUT
或 export TMOUT=180
[root@ecs-3366 ~]#source  /etc/profile

 

28、创建秘钥,免密登录

ssh-keygen   //创建秘钥

ssh-copy-id  root@ip   //将生成秘钥传递给其他主机即可

 

29、启动邮件服务,无法发邮件,查看状态出现以下报错:

Aug 12 00:30:05 web01-001 systemd[1]: Starting Postfix Mail Transport Agent...
Aug 12 00:30:05 web01-001 sendmail[26115]: My unqualified host name (web01-001) unknown; sleeping for retry
Aug 12 00:31:05 web01-001 sendmail[26115]: unable to qualify my own domain name (web01-001) -- using short name

 最终在/etc/hosts文件配置相应解析解决:

192.168.0.3 web01-001 zhkj.mail.com(原因不明)

参考文档:

https://blog.51cto.com/hades02/1734336(只添加此参考中的修改及成功)

https://www.cnblogs.com/linuxzkq/p/4859737.html

 

30、将写好的脚本上传到git仓库后,再拉下来执行的时候出现报错install_elasticsearch.sh: line 73: syntax error: unexpected end of file

经查询是由于编码引起的,linux下编码是unix,尔传到window时编程了dos类型,故在上传到服务器执行时出现此报错

解决方法:打开脚本输入:set ff 可查看当前类型,若为dos则为window格式,则执行脚本报错,可执行:set ff=unix  再次检查脚本语法及不会报错

参考链接:https://blog.csdn.net/u012453843/article/details/69803244

 

31、cp命令

cp -i   复制时,若目标文件存在,则会提示是否覆盖

cp -f  强制覆盖,不会提示

cp -a  复制时不改变用户属性

cp -r  复制目录

 

32、shell脚本中set命令的用处

1) set -u

  执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。set -u就用来改变这种行为。脚本在头部加上它,遇到不存在的变量就会报错,并停止执行

2) set -x

  默认情况下,脚本执行后,屏幕只显示运行结果,没有其他内容。如果多个命令连续执行,它们的运行结果就会连续输出。有时会分不清,某一段内容是什么命令产生的。

set -x用来在运行结果之前,先输出执行的那一行命令。或在执行脚本时,添加-x选项执行脚本 sh -x  shell.sh

3)  Bash 的错误处理

  如果脚本里面有运行失败的命令(返回值非0),Bash 默认会继续执行后面的命令。Bash 只是显示有错误,并没有终止执行。

  这种行为很不利于脚本安全和除错。实际开发中,如果某个命令失败,往往需要脚本停止执行,防止错误累积。这时,一般采用下面的写法。

# 写法一
command || { echo "command failed"; exit 1; }

# 写法二
if ! command; then echo "command failed"; exit 1; fi

# 写法三
command
if [ "$?" -ne 0 ]; then echo "command failed"; exit 1; fi

4)  set -e

   上面这些写法多少有些麻烦,容易疏忽。set -e从根本上解决了这个问题,它使得脚本只要发生错误,就终止执行

    set -e根据返回值来判断,一个命令是否运行失败。但是,某些命令的非零返回值可能不表示失败,或者开发者希望在命令失败的情况下,脚本继续执行下去。这时可以暂时关闭set -e,该命令执行结束后,再重新打开set -e

set +e
command1
command2
set -e

上面代码中,set +e表示关闭-e选项,set -e表示重新打开-e选项。

33、top命令非交互执行服务占用内存CPU

top -bn1      //-b非交互执行、-n几秒执行一次

 

34、shell脚本变量表示方式:m=${1:-start}

$1代表第二个参数

m=${1:-start}表示

如果$1存在且不为空,m就是$1

如果$1不存在或为空,那么m就是start

 

35、查看进程的线程数

ps  -T -p  PID或top   使用H选项

 

36、parted分区(将4T的硬盘分区一个分区)

选择操作磁盘
parted命令后跟上欲操作磁盘的名字即可选择此设备进行操作。

[root@kvm ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

新建磁盘标签类型为GPT

因为parted命令只能针对gpt格式的磁盘进行操作,所以这里必须将新建的磁盘标签格式设为gpt。

(parted) mklabel gpt

分区

命令格式

mkpart PART-TYPE [FS-TYPE] START END
    • PART-TYPE(分区类型)
      • primary
        主分区
      • logical
        逻辑分区
      • extended
        扩展分区
    • FS-TYPE(文件系统类型)
      • ext4
      • ext3
      • ext2
      • xfs
      • 其他......
    • START
      设定磁盘分区起始点;可以为0,numberMiB/GiB/TiB;
      • 0
        设定当前分区的起始点为磁盘的第一个扇区;
      • 1G
        设定当前分区的起始点为磁盘的1G处开始;
    • END
      设定磁盘分区结束点;
      • -1
        设定当前分区的结束点为磁盘的最后一个扇区;
      • 10G
        设定当前分区的结束点为磁盘的10G处;

将/dev/sdb整个空间分给同一个分区

(parted) mkpart primary 0 -1                                              
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
(parted) p                                                                
Model: AVAGO AVAGO (scsi)
Disk /dev/sdb: 18.0TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  18.0TB  18.0TB               primary
(parted) q                                                                
Information: You may need to update /etc/fstab.

格式化分区

因为整个/dev/sdb只分了一个区,则这个分区名默认会分配为/dev/sdb1;使用mkfs命令将/dev/sdb1分区格式化为ext4

[root@kvm ~]# mkfs -t ext4 /dev/sdb1                 
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb1 alignment is offset by 244736 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=64 blocks, Stripe width=64 blocks
274659328 inodes, 4394530311 blocks
219726515 blocks (5.00%) reserved for the super user
First data block=0
134111 block groups
32768 blocks per group, 32768 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
        2560000000, 3855122432

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

创建挂载目录

[root@kvm ~]# mkdir /gfsdata01

临时挂载分区

[root@kvm ~]# mount /dev/sdb1 /gfsdata01
[root@kvm ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/root_vg-lv_root   89G  2.6G   82G   4% /
devtmpfs                     126G     0  126G   0% /dev
tmpfs                        126G     0  126G   0% /dev/shm
tmpfs                        126G  2.0M  126G   1% /run
tmpfs                        126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                    976M  216M  694M  24% /boot
/dev/sda7                     99G   61M   94G   1% /home
/dev/sda8                     62G   53M   59G   1% /tmp
/dev/sda6                     99G   61M   94G   1% /app
tmpfs                         26G     0   26G   0% /run/user/1014
tmpfs                         26G     0   26G   0% /run/user/0
/dev/sdb1                     17T   20K   16T   1% /gfsdata01

参考连接:https://www.cnblogs.com/wholj/p/10924129.html

 

35、测试内网直接的网路传输速率

【iperf测试】
1、角色A:新开通的那台云主机(192.168.0.7),角色B:原来4台中的任意一台即可。
2、A和B均安装iperf工具,命令:yum install -y iperf
3、A作为服务端开启iperf,命令:iperf -s
4、B作为客户端测试网速,命令:iperf -c 192.168.0.7 -t 30 -P 10 -b 100M
5、等待测试过程,观察A和B的结果。

 

36、springcloud 指定本地配置文件启动参数

--spring.config.local=application.yml  --spring.profiles.active=local

 

37、移动云发送邮件到163邮箱,收不到。可使用指定邮件发送的方式来发送邮件来接收

示例使用postfix,在/etc/mail.rc配置文件新增配置,使用指定邮箱发送邮件,添加配置如下:

set from=wushaoyu95@163.com
set smtp=smtp.163.com
set smtp-auth-user=wushaoyu95
set smtp-auth-password=KYUFYLBUOLIPRWWG  #授权码
set smtp-auth=login

重启postfix服务,相关参考连接如下:https://blog.csdn.net/weixin_30386713/article/details/98422327

 

38、使用vim编辑文件,复制带有#号的文件到文件中时,需修改格式,否则会出现大量#号

set paste

 

39、ymal 里面,`|2` `|-2` `|`  `|-` 区别

1)有没有换行符的区别,带-就没换行符

2)还有一个>- >的区别是空格符,带-的没有换行符

 

40、dell服务器查看raid信息

安装OMSA 后执行此命令查看raid信息

omreport storage vdisk  #执行此命令即可

 

21、ps命令

一、ps命令

[root@localhost ~]# ps aux|head -1;ps aux|sort -rn -k3|head -10

ps参数的a指代all,表示所有的进程,u指代user id,就是执行该进程的用户id,x指代显示所有程序,不以终端机来区分。

sort命令:r代表reverse,反向比较效果  n:代表根据数值排序  k:代表根据哪一列进行排序,后面的数字3表示按照第3列排序

注:ps -A 显示所有进程

ps -e 此参数的效果和指定"A"参数相同

-f 全部列出,通常和其他选项联用

 

22、测试网络连通性

不断telnet查看网络是否能通:

while true; do echo "" | telnet 172.23.111.11 22; sleep 0.1; done

  或用nc命令测试: nc -vz 10.0.0.3 443