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/
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16168715.html