Linux常用命令

常用命令

系统信息

arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本 
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 
hdparm -i /dev/hda 罗列一个磁盘的架构特性 
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 
cat /proc/cpuinfo 显示CPU info的信息 
cat /proc/interrupts 显示中断 
cat /proc/meminfo 校验内存使用 
cat /proc/swaps 显示哪些swap被使用 
cat /proc/version 显示内核的版本 
cat /proc/net/dev 显示网络适配器及统计 
cat /proc/mounts 显示已加载的文件系统 
lspci -tv 罗列 PCI 设备 
lsusb -tv 显示 USB 设备 
date 显示系统日期 
cal 2007 显示2007年的日历表 
date 041217002007.00 设置日期和时间 - 月日时分年.秒 
clock -w 将时间修改保存到 BIOS 

系统关机

关机 (系统的关机、重启以及登出 )

shutdown -h now 关闭系统
init 0 关闭系统
telinit 0 关闭系统
shutdown -h hours:minutes & 按预定时间关闭系统 
shutdown -c 取消按预定时间关闭系统 
shutdown -r now 重启
reboot 重启
logout 注销 

文件和目录

查看文件目录信息

cd /home # 进入 '/ home' 目录' 
cd .. # 返回上一级目录 
cd ../.. # 返回上两级目录 
cd # 进入个人的主目录 
cd ~user1 # 进入个人的主目录 
cd - # 返回上次所在的目录 
pwd # 显示工作路径 
ls # 查看目录中的文件 
ls -F # 查看目录中的文件 
ls -l # 显示文件和目录的详细资料 
ls -a # 显示隐藏文件 
ls *[0-9]* # 显示包含数字的文件名和目录名 
tree # 显示文件和目录由根目录开始的树形结构

管理文件目录

mkdir dir1 # 创建一个叫做 'dir1' 的目录' 
mkdir dir1 dir2 .... # 同时创建两个目录或多个目录
# 序列 
# {dir3,dir4,dir5}      # 指定成员的序列
mkdir {dir3,dir4,dir5}  # 创建了3个目录,分别是dir3,dir4,dir5
# mkdir dir{6..10}      # 指定成员范围的序列
mkdir dir{1..3}         # 创建了dir1,dir2,dir3这个范围的目录
# mkdir demo{01..100}   # 指定成员的长度补0,按末尾数字的长度,给所有的数字进行补0,不足2位,左边补1个0
mkdir user{01..3}       # 创建user01,user02,user03这几个目录
# mkdir goods{0..10..2} # 指定步进值的序列,步进值表示间隔数值
mkdir goods{0..10..2}   # 创建goods00,goods02,goods..,goods10之间的偶数目录

mkdir -p /tmp/dir1/dir2 # 创建一个目录树[多级目录]

# 注意,在工作中,rm是禁用的!!!使用mv代替!
rm -f file1    # 无须确认,直接删除一个叫做 'file1' 的文件' 
rmdir dir1     # 删除一个叫做 'dir1' 的目录',rmdir只能删除空目录!!! 
rm -rf dir1    # 递归删除一个叫做 'dir1' 的目录及其内容,慎用!~!! 
rm -rf dir1 dir2 # 同时删除两个目录及它们的内容,慎用

mv dir1 new_dir # 重命名/移动一个目录,或者对文件进行改名 
cp file1 file2 # 复制一个文件
cp dir/* . # 复制一个目录下的所有文件到当前工作目录 
cp -a /tmp/dir1 . # 复制一个目录到当前工作目录 
cp -a dir1 dir2 # 复制一个目录 
cp -r dir1 dir2 # 复制一个目录及子目录

文件搜索

find / -name demo*     # 从 '/' 开始进入根文件系统搜索名称以'demo'开头的文件和目录
find / -name *demo     # 从 '/' 开始进入根文件系统搜索名称以'demo'结尾的文件和目录
find / -name *demo*     # 从 '/' 开始进入根文件系统搜索名称包含'demo'的文件和目录
find /root -name *demo* # 从 '/' 开始进入根文件系统搜索名称包含'demo'的文件和目录

    [root@localhost ~]# find / -name demo*
    /root/dir8/demo.txt
    /root/dir9/demo.txt
    /root/dir007/dir6/demo.txt
    /root/dir007/demo333.txt
    /root/dir007/demo333_bak.txt
    /root/dir007/dir006/demo.txt

find / -user user1 # 搜索属于用户 'user1' 的文件和目录 
find / -type f -atime +100 # 从'/'开始,搜索在过去100天内未被使用过的执行文件 
find / -type f -mtime -10 # 搜索在10天内被创建或者修改过的文件 
# find搜索文件,是逐个目录进行查找, 所以尽量不要从 根目录下去进行查找!!!尽量缩减搜索,否则系统会卡顿的。

# ContOS安装软件、命令:  yum install -y mlocate
# Ubuntu安装软件、命令: sudo apt install -y mlocate
# 使用locate之前,要了解locate内部运行原理:locate执行过程中,直接系统数据库中搜索文件信息的,效率贼高!
# 所以,需要更新以下最近的系统的文件数据库,先运行 'updatedb' 命令
locate *.txt  # 寻找以 '.txt' 结尾的文件 -  

# 查找二进制文件、例如命令,查找源码包或者命令手册时使用whereis
whereis tree  # 显示一个二进制文件、源码或man的位置 

# 查找二进制文件、例如命令、
which tree    # 显示一个二进制文件或可执行文件的完整路径 

查看文件内容

# 测试数据
echo "hello
world 
python
baidu" > demo.txt # 把"hello\nworld" 写入到demo.txt中
cat demo.txt  # 从第一个字节开始正向查看文件'demo.txt'的内容
# cat只适合用于查看小文件的内容,大文件不适合.
cat -n demo.txt  # 显示当前文件的内容和行数
tac -n demo.txt  # 从最后一行开始反向查看文件'demo.txt'的内容
# 统计文件内容的字数/单词/行数
wc demo.txt  # 统计demo.txt文件的行数/单词数/字数
wc demo.txt  /etc/passwd  # 统计多个文件的行数/单词数/字数,并汇总。

    [root@localhost dir8]# wc demo.txt /etc/passwd
   行数 单词数 字数  文件路径
	1    3       19 demo.txt
    23   47     1127 /etc/passwd
    24   50     1146 总用量                # 末行表示汇总


# 准备一个大文件
cat << EOF >>demo2.txt
青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归?
少壮不努力,老大徒伤悲。

青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归?
少壮不努力,老大徒伤悲。

青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归?
少壮不努力,老大徒伤悲。
EOF


more demo2.txt # 查看大文件"demo.txt"的内容,按空格键可以继续往下翻看数据 

less demo2.txt # 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作,Q键退出

head -4 demo2.txt # 查看文件的前4行 
tail -2 demo2.txt # 查看一个文件的最后两行 
tail -f /var/log/messages # 实时查看'/var/log/messages'系统运行信息文件的内容 

文本处理

# Linux3剑客:grep, sed, awk 是最强大的三个文本处理命令

# grep 文本搜索,支持正则使用
# 用法1,从文件中搜索关键字
#        grep 关键字 文件
# 用法2,从上一个操作命令的结果内容中,提取关键字信息
#        上一个命令 | grep 关键字

grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug" 
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行 
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug" 
ps aux|grep django # 先列出当前操作系统中运行的所有进程列表信息以及PID,然后从结果中搜索包含了django关键字的内容信息

# sed 文本的查看、删除、替换,支持正则使用。
sed "s/baidu/aliyun/g" demo.txt     # 将demo.txt文件中的 "baidu" 替换成 "aliyun",不修改文件内容
sed -i "s/baidu/aliyun/g" demo.txt  # 将demo.txt文件中的 "baidu" 替换成 "aliyun",并修改文件内容
sed '/^$/d' demo2.txt  # 从demo2.txt文件中删除所有空白行,并显示内容,不修改文件内容
sed -i '/^$/d' demo2.txt # 从demo2.txt文件中删除所有空白行,并显示内容,并修改文件内容
sed '/ *#/d; /^$/d' demo2.txt # 从demo2.txt文件中删除所有注释和空白行,常用于代码压缩
sed -n '/hello/p' demo.txt   # 查看只包含词汇 "string1"的行 
sed -e 's/ *$//' demo.txt    # 删除每一行最后的空白字符 
sed -e 's/world//g' demo.txt  # 从文档demo.txt中只删除词汇 "world" 并保留剩余全部 
sed -n '1,5p;5q' demo.txt  # 查看从第1行到第5行内容 
sed -n '2,4p;4q' demo.txt  # 查看从第2行到第4行内容
sed -n '5p;5q' demo.txt    # 查看第5行 

# awk 按换行按空格处理文本
cat demo.txt | awk 'NR%2==1'  # 删除demo.txt文件中的所有偶数行 NR表示行号
echo a b c | awk '{print $1}' # 查看一行第一列,自动按空格分三列,$1表示第1列, $2表示第2列,以此类推 
echo a b c | awk '{print $1,$3}'  # 查看1行的第1和第1列

# 合并文件内容
echo "hello" > t1.txt
echo " world" > t2.txt
paste t1.txt t2.txt  # 合并2个文件的内容
 
# 对内容进行排序
sort t1.txt t2.txt # 排序两个文件的内容
echo "hello" >> t2.txt  # 追加内容"hello" 到 t2.txt
sort t1.txt t2.txt | uniq  # 取出两个文件的并集(重复的行只保留一份) 
sort t1.txt t2.txt | uniq -u # 删除交集,留下其他的行 
sort t1.txt t2.txt | uniq -d # 取出两个文件的交集(只留下同时存在于两个文件中的文件)

打包压缩文件

# 基于bzip算法压缩文件内容,不能压缩目录!!!生成的文件后缀.bz2
bzip2 demo2.txt       # 压缩一个叫做 'demo2.txt' 的文件,得到压缩包,demo2.txt.bz2
bunzip2 demo2.txt.bz2 # 解压一个叫做 'demo2.txt.bz2'的文件

# 基于gzip算法压缩文件,压缩程度把上面的要好
# 最常用
gzip demo2.txt  # 压缩一个叫做 'demo2.txt'的文件,得到压缩包,demo2.txt.gz
gunzip demo2.txt.gz # 解压一个叫做 'demo2.txt.gz'的文件 
gzip -9 demo2.txt # 最大程度压缩

# 基于rar针对文件或目录打包
# ContOS安装:
#        wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
#        tar zxvf rarlinux-x64-6.0.2.tar.gz -C /usr/local
# Ubuntu安装:
#        sudo apt install rar
rar a dir8.rar dir8  # 打包dir8目录,并创建一个叫做 'dir8.rar' 的包 
rar a dir8.rar file1 file2 dir1 # 同时把多个文件或目录打包到一起 到 file.rar包中 
rar x dir8.rar  # 解压rar包

# 基于tar针对文件或目录打包,Linux最常用这个
tar -cvf dir8.tar dir8 # 创建一个非压缩的 dir8.tar的包 
tar -cvf dir8.tar file1 file2 dir1 # 把多个文件或目录打包到一起 
tar -tf dir8.tar # 显示一个包中的内容
tar -xvf dir8.tar # 释放一个包,解包
tar -xvf dir8.tar -C /tmp # 将压缩包释放到 /tmp目录下 
tar -cvfj dir8.tar.bz2 dir1 # 创建一个bzip2格式的压缩包 
tar -jxvf dir8.tar.bz2 # 解压一个bzip2格式的压缩包 

# 重要!最常用的打包压缩命令!
tar -cvfz dir8.tar.gz dir1 # 创建一个gzip格式的压缩包 
tar -zxvf dir8.tar.gz # 解压一个gzip格式的压缩包

# zip
zip file1.zip file1 # 创建一个zip格式的压缩包 
zip -r file1.zip file1 file2 dir1 # 将几个文件和目录同时压缩成一个zip格式的压缩包 
unzip file1.zip # 解压一个zip格式压缩包 

系统网络

磁盘空间
df -h  # 显示已经挂载的分区列表 
ls -lSr |more # 以尺寸大小排列文件和目录 
du -sh dir8 # 估算目录 'dir8' 已经使用的磁盘空间' 
du -sk * | sort -rn # 以容量大小为依据依次显示文件和目录的大小 ,单位是KB
网络进程
ping 网络地址/IP                 # 测试网络
ping  www.baidu.com -c 3 -i 2  # 每隔2秒发送1个数据包,持续3次,监测网络

# ContOS: yum install -y net-tools
# Ubuntu: sudo apt install net-tools
ifconfig # 列出当前系统的所有网卡信息 ,可以简写成:ip a 
#    lo回环网卡,就是127.0.0.1对应的网卡
#    ens33 以太网卡
ifconfig ens33 # 显示一个以太网卡的配置 
ifup ens33      # 启动指定网卡
ifdown ens33    # 关闭指定网卡
  
route -n  # 打印路由表,可以在第一行查看当前电脑的路由表 Gateway表示网管  netmask表示子网掩码
hostname  # 显示当前系统的主机名
hostnamectl set-hostname moluo   # 修改主机名

host www.baidu.com # 对域名解析成IP地址,也可以对IP地址解析成域名
# ContOS: yum install -y bind-utils
nslookup www.baidu.com  对域名解析成IP地址,也可以对IP地址解析成域名
# ContOS: yum install -y whois.x86_64
whois www.baidu.com 

# 查看网络进程
ps ef   # 列出当前系统下所有的进程
ps aux  # 列出当前系统下所有的进程的详细信息
#   PID(进程ID) TTY(哪个用户开启的)      STAT(当前进程状态)   TIME(执行时间) COMMAND(执行的终端命令)
netstat -tup   # 显示系统的所有网络连接以及对应的进程ID
netstat -tupl  # 显示系统的所有网络连接以及对应的进程ID【详细】

# 网络抓包,类似谷歌浏览器中的F12中的network
# ContOS安装:yum install -y tcpdump
tcpdump tcp port 80 # 对80端口的所有请求进行抓包
tcpdump -i ens33    # 对ens33网卡进行网络监听
tcpdump host 10.0.0.131 # 对访问目标地址为10.0.0.131的请求进行监听

# Linux的网络分析工具,类似window的资源管理器
top
    第一行 (uptime)
    	系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
    第二行:进程信息
    	进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
    第三行:cpu信息
        1.5 us:用户空间所占CPU百分比
        0.9 sy:内核空间占用CPU百分比
        0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
        97.5 id:空闲CPU百分比
        0.2 wa:等待输入输出的CPU时间百分比
        0.0 hi:硬件CPU中断占用百分比
        0.0 si:软中断占用百分比
        0.0 st:虚拟机占用百分比
    第四行:内存信息(与第五行的信息类似与free命令)
        8053444 total:物理内存总量
        7779224 used:已使用的内存总量
        274220 free:空闲的内存总量(free+used=total)
        359212 buffers:用作内核缓存的内存量
    第五行:swap信息
        8265724 total:交换分区总量
        33840 used:已使用的交换分区总量
        8231884 free:空闲交换区总量
        4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。


kill -9 进程ID  # 强制结束进程
# 查找端口对应的进程ID,并强制结束, CentOS中安装:yum install -y lsof
kill -9 `lsof -t -i:端口`  
# kill -9 $(lsof -t -i:端口)
# lsof -t -i:端口 | kill -9

pkill -f vi  # 表示结束vi关键字相关的进程
#  CentOS中安装:yum install -y psmisc
killall 服务名称/程序名称  # 例如:killall celrey/nginx/
posted @ 2022-04-20 10:16  寻月隐君  阅读(30)  评论(0编辑  收藏  举报