欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LinuxShell基础命令

程序员文章站 2022-06-10 19:14:49
...

参考文档RUNOOB Linux 教程

1.Linux基础命令

1.1 查看文件

  • cat – 用于连接文件并打印到标准输出设备上
    cat /etc/issue

  • more --类似cat命令,以分页的方式显示文件内容
    ls -l |more

  • less --与more类似,但使用less可以随意浏览文件
    ps -ef| less
    history| less

  • head --用于显示文件的开头至标准输出中
    head -n 20 /etc/fstab
    ps -ef| head

  • tail --用于显示文件的末尾至标准输出中
    tail -n 20 /var/log/messages
    tail -f /var/log/messages

1.2 文本处理

  • vim是vi改进版本,程序员的文本编辑器
    vim常用模式
    命令模式
    插入模式
    ex模式
    可视模式

LinuxShell基础命令

  • grep文本过滤

    grep – 命令用于查找文件里符合条件的字符串

    grep [-abcEGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]

    # 查看文本
    grep test filee
    grep -v test file
    grep -iRn test dir
    grep -A 10 -B 10 test file
    grep -E -w -o "/.*\w*/.conf"     #正则匹配"/*/xxx.conf"配置文件的纯路径单词
    grep 'model name' /proc/cpuinfo  # 查看CPU型号
    grep -E -v "^#|^$" /etc/fstab    #显示/etc/fstal的有效内容(不显示空行和注释行)
    grep -iRn rot /root            #搜索/root目录下的所有文件,显示包含"rot"关键字的行
    grep -c "48" test.txt #统计所有以“48”字符开头的行有多少
    grep -i "May" test.txt #不区分大小写查找“May”所有的行)
    grep -n "48" test.txt #显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
    grep -v "48" test.txt #显示输出没有字符“48”所有的行)
    grep "471" test.txt #显示输出字符“471”所在的行)
    grep "48;" test.txt #显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
    grep "48[34]" test.txt #显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
    grep "^[^48]" test.txt #显示输出行首不是字符“48”的行)
    grep "[Mm]ay" test.txt #设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
    grep "K…D" test.txt #显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
    grep "[A-Z][9]D" test.txt #显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
    grep "[35]..1998" test.txt #显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
    grep "4\{2,\}" test.txt #模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
    grep "9\{3,\}" test.txt #模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
    grep "9\{2,3\}" test.txt #模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
    grep -n "^$" test.txt #显示输出空行的行号
    ls -l |grep "^d" #如果要查询目录列表中的目录 同:ls -d *
    ls -l |grep "^d[d]" #在一个目录中查询不包含目录的所有文件
    ls -l |grpe "^d…..x..x" #查询其他用户和用户组成员有可执行权限的目录集合
    
  • wc计算字数

    wc file
    wc -l file
    w | wc -l
    
    #查看CPU数量
    grep processor /proc/cpuinfo | wc -l
    
  • sed文本处理,利用script来处理文本文件

    #将文本中"This"替换为"That"
    sed 's/This/That' test.txt
    
    #从第2处匹配开始替换
    echo sksksksksksk | sed 's/sk/SK/2g'
    
    #删除中的空白行
    sed '/^$/d' test.txt
    
    #删除文件第2行
    sed '2d' test.txt
    
  • uniq删除文本重复行
    uniq命令用于检查及删除文本文件中重复出现的行列

    # 删除重复行
    uniq testfile
    # 统计重复行数
    uniq -c testfile
    # 只显示重复的行
    uniq -d testfile
    
  • awk处理文本文件语言,强大的文本分析工具

    #查看各挂载点的可用空间
    df -h |awk '{print $1,$4}'
    #查看每个用户shell
    awk -F ':' '{print $1,$7}' /etc/passwd
    #查看长度大于80字节的日志信息
    awk 'length>80' /var/log/messages
    #输出$6到最后的所有内容
    awk '{ for(i=1; i<6; i++){ $i="" }; print $0 }' test.txt
    #获取nginx进程的执行命令
    ps -ef|grep nginx |grep -v grep|awk '{{ for(i=1; i<=7; i++){ $i="" };print $0}'
    
  • xagrs,给命令传递参数的一个过滤器

  xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
命令格式

somecommand |xargs -item command

参数
-a file 从文件中读入作为sdtin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

#-n 选项多行输出,每行3个单元
cat test.txt | xargs -n3
#以X字符为分隔符,将字符串分开并输出
echo "nameXnameXnameXname" | xargs -dX
echo "nameXnameXnameXname" | xargs -dX -n2
#复制所有图片文件到 /data/images 目录下
ls *.jpg | xargs -n1 -I {} cp {} /data/images
#统计一个源代码目录中所有 go 文件的行数,xargs -0是将 \0 作为定界符
find . -type f -name "*.go" -print0 | xargs -0 wc -l  #print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题
#查找所有的 jpg 文件,并且压缩它们
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
#使用 xargs下载文件中所有链接
cat url-list.txt | xargs wget -c
#服务器磁盘满,一般由大的日志文件导致,需找到大文件
du -m -d 1 /|sort -nr  #du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前)
find / -size +500M -print0|xargs -0 du -m|sort -nr

1.3 传输文件

  • Linux/Unix同Window文件传输

    • rz,sz是Linux/Unix同Window文件传输的命令行工具,进行Zmodem。使用方法如下:
      • linu端需要安装rz/sz命令,也就是lszrz包;
      • Window端需要支持ZModem的telnet/ssh客户端(Xshell,SecureCRT支持)
      • 运行命令rz,即接收Windows文件,xshell就会弹出文件选择对话框,选好文件后关闭对话框,文件就会上传到linux里的当前目录。
      • 运行命令sz file,就是发文件到Windows上(保存的目录是可以配置),比ftp命令方便多,而且服务器不用再开FTP服务;
    • 提示:rz、sz命令 系统可能没有安装,软件包的名字是[rzsz]
  • Linux间文件复制

    • scp是linux系统下基于ssh登录进行安全的远程文件拷贝命令
    • sync/scp相关文章
    scp [可选参数] file_source file_target
    scp loca_file remote_ip:remote_file
    scp -r local_folder remote_ip:remote_folder
    scp -P 4588 aaa@qq.com_ip:/usr/local/sin.sh /home/administrator
    

1.4 文件类其他命令

  • find 命令用来在指定目录下从查找文件

    find . -name "*.c"
    find . -type f -name abc
    find . -type d -name include
    find . -ctime -20
    find /var/log -type f -mtime +7 -ok rm{} \;
    find . -type f -perm 644 exec ls -l {} \;
    find / -type f -size 0 -exec ls -l {} \;
    
  • pwd查看当前目录

    pwd [-L]
    pwd -P
    
  • pwdx查找程序执行路径

    pwdx PID
    
  • mount 命令是经常会用命令,用于挂载Linux系统外文件

    mount /dev/sdb1 /mnt
    mount -o ro /dev/sdb1 /mnt
    mount -o oop /tmp/image.iso /mnt/cdrom
    

1.5 进程类

  • ps命令用于显示当前进程状态

    ps -ef|grep http
    ps aux|grep http
    ps -A
    ps -u root
    
  • top命令用于显示实时process进程状态
    可以看到load average/CPU使用率/内存使用率

    #当服务器中某个服务进程内存或者CPU资源消耗非常严重时,查看特定进程
    top -p PID
    
    #查看特定用户的进程情况
    top -u USERNAME
    
  • kill关闭进程

    kill 12345
    kill -KILL 123456
    
  • nohup 不挂断运行命令

    nohup ./start.sh &
    nohup ./start.sh > start.log
    
  • lsof 命令用于查看进程打开文件,打开文件进程,进程打开的端口(TCP/UDP)

    lsof abc.txt
    lsof -c abc
    lsof -i:8080
    #列出所有打开的文件
    lsof
    #找出哪些进程在使用/tmp/
    lsof /tmp
    #列出所有mysql用户打开的文件
    lsof -u mysql
    #列出进程号为1的进程打开的文件
    lsof -p 1
    

1.6 系统类

  • hostmane 命令用于显示和设置系统主机名称

    #生产环境不能修改主机名
    hostname -F
    hostname -s
    
  • uptime命令能够打印系统总共运行市场和系统平均负载

    uptime 14:54:05 up 1 day, 21:07,  0 users,  load average: 0.01, 0.02, 0.05
    #系统当前时间 uptime 15:31:30  
    #主机已运行时间,时间越大,机器越稳定up 1 day, 21:07
    #用户连接数,是总连接数而不是用户数 0 users
    #系统平均负载, load average: 0.01, 0.02, 0.05,分别表示1分钟,5分钟,15分钟平均负载
    

    load average(系统平均负载):
      load average 就是一定 时间内计算机有多少active_taks,也就是计算机的任务执行队列的长度,cpu计算 的队列。load average计算,有多少核心即为于多少负载原则;

  • nproc命令查看CPU数量

  • pssh工具箱
    pssh是可以并发在多台机器上批量执行命令的工具,系统默认不安装;包括一下命令:

    • pssh:在远程多台主机上并行运行命令
    • pscp:把文件并行复制到多台远程主机上
    • prsync:使用rsync协议本地文件同步到远程多台主机上
    • pnuke:在远程多台主机上并行killall某进程
    • pslurp:把文件从远程多台主机上复制到本地主机上
  • pssh命令

    #pssh命令主要用于查看,如修改需要做好操作前测试
    
    #连接到host1和host2运行uptime
    pssh -i -H "host1 host2" uptime
    #连接到ip.txt列表里的主机,运行uptime
    pssh -i -h ip.txt uptime
    #运行长命令不超时
    pssh -i -h ip.txt -t 0 sleep 10000
    
  • 远程复制

    #批量传送本地文件到"目标机器"
    pscp -h ip.txt local remote
    
    #批量传送"目标机器"文件到本地
    pslurp -h ip.txt -L localdir remote local
    
    #通过rsync协议批量传送本地文件到"目标机器",使用admin用户
    prsync -h ip.txt -l admin local remote
    
  • iostat用于输出CPU和磁盘I/O相关统计信息

    #查看所有磁盘IO
    iostat
    #查看sda磁盘IO,每次相隔2秒,查看5次
    iostat sda 2 5
    

2.NTP

2.1 NTP介绍

  Network Time Protocol(NTP,网络时间协议)用于同步它所有客户端时钟的服务;它可以再大规模的设备范围内同步矫正
时间到ms级别精度;在网络稳定的局域网内,精度甚至可以达到微秒级;

2.2 NTP时间来源

  • GPS、北斗等卫星系统
  • 原子钟
  • 移动基站
  • 恒温晶振

2.3 NTP配置

  • 安装NTP服务

    • 检查NTP服务是否安装
      rpm -q ntp
    • 安装NTP服务
      yum install ntp
  • 配置NTP客户端

    • NTP配置文件
      /etc/ntp.conf

    • 内容查看
      查看server开关配置内容
      server ntp1.tbsite.net iburst minpoll 4 maxpoll 6
      server ntp2.tbsite.net iburst minpoll 4 maxpoll 6

  • NTP服务管理

    • 服务状态查看
      service ntpd status
    • 服务启用
      service ntpd start
    • 服务重启
      service ntpd restart
    • 服务开启启动
      chkconfig ntpd on
  • NTP常用命令

    • 查询NTP服务器时间
      ntpdate -q ntp1.aliyun.com

    • 查询NTP时间同步情况
      ntpq -p

3.软件管理

3.1 yum源配置

  • yum配置文件
    • /etc/yum.repos.d/*.repo
  • 配置文件内容
    • [名称]-yum源的名称
    • name-yum源的描述信息
    • baseurl-yum源地址
    • gpgcheck是否检查GPGKEY
    • enabled是否可用

3.2 yum常用命令

#安装
yum install 全部安装
yum install package1 安装指定安装包package1
yum groupinstall group1 安装程序组group1

#更新升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新程序
yum groupupdate group1升级程序组group1

#查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的数据包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息
yum search string 根据关键字string查找安装包

#删除程序   注意生产环境不允许删除操作
yum remove package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况

3.3 rpm软件管理

#rpm安装
rpm -ivh lynx-2.8.5-18.2.i386.rpm

#升级软件
rpm -Uvh lynx-2.8.5-18.2.i386.rpm
rpm -Fvh lynx-2.8.5-18.2.i386.rpm
  • rpm查询
    使用命令rpm -q来查询已安装软件包的数据库;
    rpm -q foo 显示foo软件包的包名,版本号和发行号;
    rpm -q foo 除了指定软件包名以外,还可以连同-q使用以下选项来指明要查询哪些软件包信息;

    -a 查询所有已安装软件包
    -f 将查询包含有文件的软件包
    -l 查询软件包安装在哪些目录
    -i 查询软件包的详细信息
    -p 查询软件包中有哪些文件

  • rpm卸载
    rpm -e foo
    注意这里使用软件包名字,而不是软件包文件的命令;版本号也不需要写;生产环境不允许删除操作;

4.DNS查询

4.1 DNS查询

  • dig命令
#基本用法
dig www.aliyun.com
#查看反向解析
dig -x 140.205.34.3
#从根服务器开始追踪一个域名解析过程
dig +trace aliyun.com
  • nslookup命令
# 直接查询
nslookup aliyun.com
# 反向查询
nslookup ip

4.2 DNS问题排查思路

  • 用户侧不能访问,运维侧可访问
    一般用户DNS设置问题
  • 用户侧和运维侧同时不能访问
    检查DNS服务能否ping通
    查看DNS服务器的53端口是否可用telnet 53

5.日志查看

5.1 日志查看命令

  • last 命令用于显示系统开机以来或是从每月初登入者的讯息
    last
    last username

  • lastb命令用于列出登入系统失败的用户相关信息
    lastb

  • 查看历史命令
    history

  • 查看日志文件
    cat
    tac
    tail -f 或tailf

5.2 常用命令

/var/log/message  系统启动后的信息和错误日志,最常用的日志
/var/log/secure   与安全相关的日志

/var/log/cron     与定时任务相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志信息
/var/log/wtmp     该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
相关标签: Server