Linux系统管理常用命令

Linux系统管理常用命令

1 文件管理

识别文件类型 ls

  • 文件类开:d:目录文件,l: 链接文件, b: 块设备文件, -: 普通文件
  • -l 列表显示
  • ls -lt/-lrt # 按时间排序或倒序
  • ll | grep ^d 显示所有文件夹
  • -a 显示包含隐藏

列出目录结构 tree

目录结构

  • Linux树状目录结构,最上层目录为根目录 /
  • 一切皆文件

vi 和 vim区别

  • vi 是内置的 , vim 算是增强版
  • i I , a A , o O , r R
  • :set nu
  • 输入行数,shift+g
  • gg, GG
  • 3yy, 3dd, u, x

pwd

ls

  • -a 显示包含隐藏
  • -l 列表显示

cd

  • cd ~/ cd ; —–切到当前用户目录
  • 使用绝对或相对路径
  • cd .. 上一级

mkdir

  • 默认只能创建一级
  • -p 一次性创建多级

文件权限修改 chmod

  • rwx 421
  • chmod +x *.sh
  • chmod -R 777 /tmp/test/ 注:-R参数递归所有子目录,给所有文件加了 777权限

修改文件或目录的归属信息 chown

  • chown zhangsan 123.txt # 把123.txt归属到zhangsan名下
  • chown zhangsan:group_name 123.txt # 把123.txt归属到zhangsan名下

查看文件状态 stat

  • stat 123.txt

设置默认文件、目录权限 umask

  • 文件 666-umask
  • 目录 777-umask

打开文件的几种方式

cat 从首至尾的顺序打印, 只能看不能改

  • -n 显示行号
  • -A 显示尾部隐藏符号,经常windows上的文件在linux环境无法使用问题查看
  • cat 有连接功能,可以一次打开多个文件,比如cat 1.txt 2.txt
  • | more 分页显示, 按空格翻到下一页

tac 反序打印出来

more 以全屏按页显示文件打

  • b, f 上下翻屏
  • 空格 翻页, 回车,换行,
  • ctrl+b, ctrl+f 上一屏,下一屏,
  • q 离开

less 按页显示,一页页加载,对于查看大文件,效率高

  • pageUp, pageDown翻页

head 显示文件前面的内容,默认前 10 行

  • 默认打印前十行
  • 可以和其他命令组合,比如: netstat -tunp | head

tail

  • **tail -f 实时查看文件的更新, 很有用, 比如日志追踪 **

tail 显示文件最后面的内容,默认最后 10 行

  • 默认打印最后十行
  • tail -100 a.txt
  • ** tail -f 实时查看文件的更新, 很有用, 比如日志追踪 **

> 重定向, >> 追加

  • ‘>’ 重定向,会覆盖原有文件 ,不存在则创建
  • ‘>>’ 追加, 不会覆盖原有文件 ,
  • echo “afsafasf” >> file

echo 输出内容到控制台

  • 输出环境变量
  • 输出简单文件

head 显示文件前面的内容,默认前 10 行

  • head -n 5 显示前5行

paste 两个文件按列合并

ln 符号链接

  • ln -s [source] [dest]

rmdir 删除空目录

rm -rf 目录下有文件一起删除

touch ab.txt 创建一个空文件

  • 可以一次性创建多个空文件, touch a.txt b.txt

cp 拷贝文件

  • cp [option] source dest
  • cp -r 递归目录下所有文件
  • **\cp 强制覆盖 **

rm

  • -r 递归
  • -f 强制

mv 移动文件或目录,或重命名

  • mv source target

文件搜索

find

  • find [搜索范围] [选项]
  • find -name , find /home -name hello.txt
  • find -user , find / -user nobody
  • find -size, find /home -size +20M, 在home目录下,查找超过 20m 的文件, k小写

locate 快速定位文件路径 ,通过查库,所以快

  • 第一次使用,需要 updatedb 创建locate数据库

grep 和 |

  • grep 过滤
  • | 管道符,将前一命令的结果交给下一命令执行
  • grep [option] 查找内容 源文件 -n显示出行号, -i 不管大小写
  • cat abc.txt | grep -i yes

压缩和解压缩

gzip, gunzip

  • gzip 压缩后不会保留原来的文件

zip, unzip

  • zip [option] xxx.zip [source], -r 递归目录 , zip -r dog.zip dog/
  • unzip [option] xx.zip, -d 指定解压后的存方目录 , unzip -d dog1/ dog.zip

tar 打包指令

  • x.tar.gz
  • c, v, f, z, x
  • tar -zcfv abcd.tar.gz ab.txt cd.txt 打包
  • tar -zcfv abcd.tar.gz /home
  • tar -zxvf abcd.tar.gz 解压到当前目录
  • tar -zxvf abcd.tar.gz -C /myhome/ 指定解压到某一目录,这个目录必须存在

2 用户管理

用户

  • Id 加用户名,查看用户信息
  • 切换用户 su 用户名
  • useradd username -g 指定组
  • Passwd username

用户组

  • Whoami
  • Groupadd groupdel

修改用户组

  • usermod -g

用户信息相关的文件

  • Etc/group
  • etc/shadow

用户切换及信息查看

  • su - zhangsan 切换用户
  • sudo su 切换到root
  • cat /etc/passwd | grep zhangsan 查看当前系统下某用用户信息
  • id zhangsan 查看账户信息
  • whoami 查看当前用户

新增用户 useradd

  • d 指定用户目录, useradd -d /data/123 zhangsan,
  • g 指定所属主组,
  • u 指定uid, 场景:通过uid筛选用户

删除用户 userdel

  • r 删除用户及其家目录, userdel -rf zhangsan
  • f 强制删除用户,即使该用户下存在运行中的进程
  • logout 退出当前用户

更改密码 passwd

  • /etc/passwd 查看当前系统下怕有用户
  • passwd zhangsan # 这是在root下修改任一用户密码,root下可能修改任何用户密码 , 且不需要验证原密码,也没有密码复杂度的要求
  • passwd 直接修改当前用户密码

更改用户信息 usermod

  • usermod -g 修改组

shadow 文件

  • cat /etc/shadow # 只有root有权查看,存放有加密后的密码
  • chage -l zhangsan 查看用户密码修改信息

3 网络管理

查看本地ip信息 ifconfig 或 ip address

查看本地路由信息 route -n

  • flag: UG才能访问外网
  • traceroute www.baidu.com 查看网络访问跳转过程

cat /etc/resolv.conf 查看DNS

ethtool eth1 查看网卡信息

网络诊断 ping, traceroute

  • ping dest-ip
  • traceroute dest-ip

查看网络连接状态 netstat

  • netstat (-tunlp or -tunp)

查看本机端口占用情况 netstat -ano

  • netstat -ano | grep 800

查看文件被占用的情况 lsof

  • lsof -c mysql 查看以关键字开头的进程占用的文件信息
  • lsof -i tcp 列出所有tcp 网络连接信息
  • lsof -i :3306 列出谁在使用某个端口
  • lsof -a -u test -i 列出某个用户的所有活跃的网络端口

抓包 tcpdump

  • tcpdump -nn -i eth0 dst 61.135.169.121 and port 8080

linux防火墙 iptables

  • iptables -nvl

dig 查看域名的DNS

  • dig baidu.com

网络问题排查

  • 系统环境: uname -a, free -m , top 查系统版本,内存、cpu使用情况
  • 系统log:dmesg; /var/log/messages, 有没有error, failed,bug 日志
  • netstate 统计,tcpdump抓包, 是否有丢包,重传
  • 网卡信息:lspci | grep Eth; ethtool 确定网卡类型

4 磁盘管理

查看磁盘分区 lsblk or df

  • lsblk 包括未挂载,未格式化,未分区的磁盘也能显示出来,包括插入的u盘等
  • df 只显示所有已经分区的磁盘

硬盘分区 fdisk

  • fdisk dev/vdb

挂载 mount

  • mount /dev/vdc1 /mountpointA
  • 持久化挂载:在/etc/rc.local 中加入上述命令

找出哪些文件占空间多 du

  • du -xks * | sort -rn | head -20
  • du -sh xxxxx 显示某个文件或目录的大小

5 系统运行情况

查看Linux内核版本

  • cat /proc/version
  • uname -a

CPU

  • lscpu
  • /proc/cpuinfo
  • top
  • sar -u -P ALL 1 # 查询CPU历史情况

内存

  • free
  • /proc/meminfo
  • sar -r 1 # 监控每一秒的内存情况

硬盘

  • iostat -xm -1 # 看io繁忙情况
  • iotop # 查看哪些进程产生大IO
  • du # 查看有哪些目录
  • sar -d 1

网络

  • sar -n DEV 1 # 监控每秒网络流量

安全

  • cat /var/log/secure # 看看谁登录过这台机器
  • w # 看当前被谁登录
  • last # 看所有登录信息, su zhangsan, cat ~/.bash_history 看最近执行的命令
  • last rebot / uptime # 查看机器启动时间
  • ps xf
  • ps -eo pid,lstart | grep xxpid # 查看某进程的启动时间
  • lsof | grep xxx # 哪个文件被打开了
  • ll /proc/xxpid 查看进程的启动命令, 目录, 可执行文件位置等

6 正则表达式与文本处理

正则表达式

文本处理 sed (按行处理器)

  • 打印指定范围的行 sed -n ‘10, 20 p’ test.txt
  • 打印包括指定关键字(范围)的行: sed -n ‘/2014/, /2018/ p’ test.txt
  • 匹配到关键字的行并做整行替换:sed ‘/running/ c\ ‘stop’’ test.txt
  • 删除包含指定关键字的行 sed ‘/running/ d’ test.txt
  • 删除指定范围的行 sed ‘1, 100 d’ test.txt , 注:加上-i参数后才会真正修改这个文件,否则只是在内存中修改

在文件中查找 grep

  • grep keyword test.txt | tail/head/…
  • grep -B/A/C 10 keyword test.txt # 查看关键字上/下/上下 10行的信息
  • grep -nr keword xxx.log | wc -l 统计某关键字在某类文件里出现的次数

拆字段 awk

  • cat /etc/passwd | awk -F: ‘{print $1, $3, $5, $NF}’ 按冒号分割每一行,并打印出分割后的第 1,3, 5和最后一列
  • cat /etc/passwd | awk -F: ‘$3>100 {print $1, $3}’ # 加条件,第三列大于100
  • $0 所有列
  • NF 最后一列索引
  • $NF 最后一列值

7 VIM

vim 有四个模式

  • 正常模式 (Normal-mode), 默认模式, 进入按esc, 如果在命令模式下需要按两次
  • 插入模式 (Insert-mode), 在正常模式中按下个别字母键(后面会详细介绍),会进入插入,比如i
  • 命令模式 (Command-mode), 在正常模式中,按下:(冒号)键或者/ (撇号),会进入命令模式。在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等
  • 可视模式 (Visual-mode), 在正常模式下,进入用v/V/Ctrl+v, 可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便

vim一次打开多个文件

  • vim a.txt b.txt 按下键盘上的冒号 :这时会在显示屏底部出现冒号 :(进入了 VIM 的命令模式),然后在输入 ls 屏幕上会出现打开的所有文件的序号和文件名,我们继续输入冒号 : ,然后输入 bn (这里的 n需要做一个解释并不是键盘上的 n ,而是文件序号的代指,如 b1 代表显示屏上切换到第一个文件,b2 代表显示屏上切换到第二个文件
  • vim -On file1 file2 … filen 左右分屏
  • vim -on file1 file2 … filen 上下分屏

vim 退出

  • :w 保存当前对文件的修改,但是不退出文件。
  • :w! 强制保存但是不退出文件。
  • :w file 保存当前的文件修改到 file 文件当中。
  • :q! 退出文件,对文件的修改不做保存。
  • :qa! 退出所有的文件,对所有的文件修改都不做保存
  • :wq 退出文件并保存对文件的修改
  • :x 退出文件并保存对文件的修改
  • :e 打开另一个文件
  • :e! 放弃对文件的所有修改,恢复文件到上次保存的位置。
  • :saveas file 另存为 file
  • :bn 和 :bp 当打开多个文件的时候可以输入 :bn 和 :bp 进行上一个文件或者下一个文件的切换。

vim编辑模式

  • i是在光标所在的字符之前插入需要录入的文本。
  • I 是在光标所在行的行首插入需要录入的文本。
  • a 是在光标所在的字符之后插入需要录入的文本。
  • A 是在光标所在行的行尾插入需要录入的文本。
  • o 是光标所在行的下一行行首插入需要录入的文本。
  • O 是光标所在行的上一行行首插入需要录入的文本。
  • s 删除光标所在处的字符然后插入需要录入的文本。
  • S 删除光标所在行,在当前行的行首开始插入需要录入的文本。
  • cw ,删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本(这个命令是两个字符的合体 cw )。

vim命令模式

  • :set nu 该命令会显示行号。
  • :set nonu 该命令会取消行号。
  • :n 定位到 n 行。
  • /{目标字符串} 查找文本中匹配的目标字符串,查到以后,输入键盘上的 n 会去寻找下一个匹配,N 会去寻找上一个匹配。
  • :set ic 编辑器将不会区分大小写,如果你进行该设置之后,进行关键字查询如 /zempty 如果文本中有 Zempty ,zEmpty,….,只要是字符相同不会区分大小写都会进行匹配。
  • :set noic 区分大小写的查询
  • :n1,n2d 删除多行文本,n1 和 n2 指的是起始行号和结束行号,d 是删除关键字
  • :s/old/new/g 将会把当前光标所在行的 old 替换成 new
  • :%s/zempty/handsome/gi 将会把全文中的 old 替换成 new
  • :n1,n2s/zempty/handsome/gIc 这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有old 替换为 new. 注:最后的g代表global即全局替换,如果去掉则只替换掉第一次出现的。i/I分别代表大小写不敏感和大小写敏感。c代表是否需要确认 。
  • :!command VIM 执行 Linux 命令, : 后面紧跟着 ! ,! 后面紧跟着 linux 命令( command 指操作 Linux 系统的一系列命令,如创建文件,新建文件夹,查询文件的属性的等), 如:!date
  • :r !command VIM 执行命令,并且添加结果至操作文本光标处

VIM 的正常模式(Normal-model)

  • 快速移动光标:请记住这几个快捷键 h,j,k,l 这几个按键主要是用来快速移动光标的,h 是向左移动光标,l 是向右移动光标,j 是向下移动光标,k 是向上移动光标,h , j , k ,l 在主键盘区完全可以取代键盘上的 ↑ ,↓ ,← , → 的功能。
  • 0 移动到行头
  • ^ 移动到本行的第一个不是 blank 字符
  • $ 移动到行尾
  • fa 移动到本行下一个为 a 的字符处,fb 移动到下一个为 b 的字符处
  • Fa 同 fa 一样,光标移动方向同 fa 相反
  • w 光标移动到下一个单词的开头
  • e 光标移动到下一个单词的结尾
  • ; 和, 当使用 f, F, t ,T, 关键字指定字符跳转的时候,使用 ;可以快速跳转到写一个指定的字符,, 是跳到前一个指定的字符
  • nG 光标定位到第 n 行的行首
  • gg 光标定位到第一行的行首
  • G 光标定位到最后一行的行首
  • H 光标定位到当前屏幕的第一行行首
  • M ML光标移动到当前屏幕的中间
  • L 光标移动到当前屏幕的尾部
  • ctrl+f 查看下一页内容
  • ctrl+b 查看上一页内容

VIM 的复制,黏贴 ,删除

** d 是删除的意思,通常搭配一个字符 ( 删除范围 ) 实现删除功能,常用的如下:**

  • dw 删除一个单词
  • dnw 删除 n 个单词,
  • dfa 删除光标处到下一个 a 的字符处( fa 定位光标到 a 处 )
  • dnfa 删除光标处到第 n 个 a 的字符处
  • dd 删除一整行
  • x 删除一个字符
  • ndd 删除光标处开始的 n 行 – dG一直删除到文件末尾,gg,dG删除整个文件内容
  • d$ 删除光标到本行的结尾
  • dH 删除屏幕显示的第一行文本到光标所在的行
  • dG 删除光标所在行到文本的结束
    ** y 是复制的意思,通常搭配一个字符(复制范围)实现复制的功能,常用的如下:**
  • yw 复制一个单词,还有 ynw
  • yfa 复制光标到下一个 a 的字符处,还有ynfa
  • yy 复制一行,还有 nyy
  • y$ 复制光标到本号的结尾
  • yH 复制屏幕显示的第一行文本到光标所在的行
  • yG 复制光标所在行到文本的结束
    ** p, P是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来**
  • p 在光标后开始粘贴
  • P 大写的 P 光标前开始粘贴

撤销操作和恢复

  • u 撤销刚才的操作
  • ctrl + r 恢复撤销操作

删除字符操作和替换

  • x 删除光标当前所在的字符
  • r 替换掉光标当前所在的字符
  • R 替换掉从光标开始以后的所有字符,除非 退出

大小写转换

  • ~ 将光标下的字母改变大小写
  • 3~ 将光标位置开始的3个字母改变其大小写
  • g~~ 改变当前行字母的大小写
  • gUU 将当前行的字母改成大写
  • guu 将当前行的字母全改成小写

VIM 的重复命令

  • . 该命令是重复上一个操作的命令
  • n重复某个命令 n 次,
  • 如 10p复制 10 次,10dd 删除十次。

VIM可视化

  • v 字符可视化
  • V 行可视化
  • Ctrl+v 块状可视化

可视化模式下操作文本

可视化模式下选择操作区域以后:

  • 按下 d会删除选择的区域,
  • 按下 y 会复制选择的区域,
  • 按下 p 会黏贴选择的区域

VIM 的代码提示功能

  • 在编辑模式下 ,快捷键 Ctrl+n 或者 Ctrl+p 会有代码提示功能,我们可以实现快速录入的效果。

8 搭配管道使用的工具

最通俗常用的grep 可搭配正则

  • cat test.txt | grep keyword

wc 统计文本行数

  • cat test.txt | wc -l # 查看行数
  • wc -l test.txgt

cut 类似awk的拆分功能

sort 排序

  • netstat -tunp | sort -rn -k3 # 按第三列倒序排

uniq 去重

  • cat test | sort | uniq

tee 既输入到屏幕又保存到文件

  • ls -al /home | tee result

tr 替换

  • cat a.log | tr -s ‘c’ ‘C’ # 把小c换成大C
  • cat a.log | tr -s ‘\n’ ‘ ‘ # 去掉换行变空格
  • tr -d ‘abc’ a.log # 删除abc

xargs

  • cat a.log | xargs # 竖的变横的

9 安装包管理

RPM redhat package manager

  • rpm -qa | grep firefox 查询是否安装了某个包
  • rpm -qi python 查询安装的某个饭的信息
  • rpm -ql python 查看安装包安装了哪些文件
  • rpm -qf /etc/passwd 查询某个文件属于哪个安装包
  • rpm -e firefox 删除 rpm包, –nodeps 强制删除
  • rpm -i firefox的安装路径, 安装某个安装包 -h 进度条, -v 提示 , rpm -ivh 安装包路径

Yum 是一个shell 前端包管理器

  • 基于rpm,能够从指定的服务器自动下载 rpm 安装包 , 可以自动处理依赖关系
  • 一次安装所有依赖的软件包

Yum 的基本指令

  • yum list | grep firefox 查询服务器上是否有需要的安装包
  • yum install firefox 安装某个指定的包 , 默认会安装最新版本

10 其他运维命令

显示历史执行过的命令 history

  • c 清除历史命令
  • 显示最近的 10 个 history 10
  • ! num, 执行编号为 num的指令

压缩与解压缩 tar

  • 压缩: tar czf test.tar.gz /data/test
  • 解压:tar xf test.tar.gz
  • 查看但不解压: tar tvf test.tar.gz

脚本执行

  • 用expect 编写自动化脚本以提高效率,典型的场景比如登录,
  • 用alias 给常用的执行命令加上别名,方便快捷
  • Shell提供了一些用于调试脚本的选项:
    • -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。bash/sh -n xxx.sh # 检测脚本语法错误
    • -v,一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。
    • -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

用curl下载ftp文件

列出本机监控端口及服务, 包括正在listen的, netstat -tunlp

  • netstat -tunlp

列出本机所有连接,不包括本地监听端口 netstat -tunp

  • netstat -tunp

命令置于后台 nohup &

  • nohup /bin/bash /data/test.sh &
  • screen

生成一个指定大小的文件 dd

  • dd if=/dev/zero of=/data/matt/2G bs=1M count=2048 # if指定生成器,of指定文件名

time 统计命令执行花费的时间

  • time netstat -tunp

获取本机ip

  • ifconfig | grep inet[^6] | grep -v 127.0.0.1 | awk ‘{print $2}’ | cut -d’:’ -f2

移动行光标, 特别在敲长命令时 ctrl a/e

  • 首:Ctrl+a
  • 末:Ctrl+e

历史命令快速查找 Ctrl r

  • Ctrl + r 输入关键字后开始查找,按ctrl+r继续向前查找,如果找到,按下箭头确认

!在shell中的应用

  • !^ 表示上一个成功执行的命令的第一个参数
  • !$ 表示上一个成功执行的命令的最后一个参数
  • !* 表示上一个成功执行的命令的所有参数, 用空格隔开
  • eg: mkdir -p a/b/c/d, cd !$

find的应用

  • find /data/logs/ -mtime +7 -name ‘.log’ -type f | xargs rm # 删除这目录下 7天之前修改过的.log文件
  • find /abc -user zhangsan -perm -szie +50G
  • find /data/logs -name abc.log
  • find / -mtime -7 全盘找最近7天改过的文件
  • find / -mmin -10 全盘找最近10分钟内改过的文件

时间日期类

date 显示当前时间

  • date “+%Y %m %d “
  • date -s “2019-10-01 21:23:13” 设置日期

cal

  • cal 2020 显示某一年的
  • mysql -uroot -p’w14i#t1NPW’ -h100.121.190.3 -P3477 CCDB_239

man

  • man ls

help

  • shell 内置命令帮助
  • help cd
作者

Amazing Coder

发布于

2023-10-08

更新于

2023-10-08

许可协议

评论