Linux核心命令

Linux查询命令手册网站:

https://wangchujiang.com/linux-command/

http://linux.51yip.com/

1.线上查询及帮助命令(3个)

man ls

help

info

2.文件和目录操作命令(13个)

ls

$ ls       # 仅列出当前目录可见文件
$ ls -l    # 列出当前目录可见文件详细信息 √
$ ls -hl   # 列出详细信息并以可读大小显示文件大小
$ ls -al   # 列出所有文件(包括隐藏)的详细信息 √
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)

cd

cd    # 进入用户主目录;
cd /  # 进入根目录
cd ~  # 进入用户主目录;
cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../..  # 返回上两级目录;
cd !$  # 把上个命令的参数作为cd参数使用。写脚本才用

关于切换到上一个工作目录的说明

cd -
# 命令会首先显示要切换到的目标目录,然后再进入。
cd ${OLDPWD}
# 命令会直接切换到上一个工作目录。

cp

将源文件或目录复制到目标文件或目录中

cp -r 
# 如果是目录需要加-r参数,递归作用

find

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-size<文件大小>:查找符合指定的文件大小的文件;

-type<文件类型>:只寻找符合指定的文件类型的文件;递归查找

 

 find / -type f -empty | xagrs rm -rf
# 检索空文件并删除

find / -type f -size +500M
# 查询大于500mb的文件

 

find /home/yuanbao/ -type f -name "t*"

 

 

find ./ -type f -mtime +3 -name "*.log"
# 查找当前目录下 3天前 有更新的文件

 

find ./ -type f -mmin -900
# 查找当前目录下 900min 以内更新的文件

 

find ./ -type f -perm 764
# 递归查找当前目录下 权限为764 的文件

 

ll -i
# 查看当前文件夹下文件的inum号
find ./ -inum 18775420
# 查找inum为18775420的文件
find ./ -inum 18775420 | xargs -i rm -rf {}
# 查找并删除inum为18775420的文件

 

UNIX/Linux文件系统每个文件都有三种时间戳:

  • 访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。

  • 修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。

  • 变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

 

seq 100 > test.java
# 创建100行的文件(清空原内容,标准输出新内容)
find ./ -type f -name "*.java"|xargs cat|grep -v "^$"|wc -l
# 代码行数统计,排除空行

 

mkdir

mkdir -p dir
# 递归创建

 

mv

用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中

mv old new
# 修改文件、文件夹名

 

rm

rm file
# 运行后询问是否删除
rm -rf file
# 强制删除

 

touch

touch file
# 普通创建
touch test_{1..100}
# 创建以test_开头的1~100的文件

 

file

file *
file test.sh
# 查看文件信息,一般看是否是shell脚本,或者executable可执行文件

 

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log <== 不显示文件名称
UTF-8 Unicode text

[root@localhost ~]# file -i install.log <== 显示MIME类别。
install.log: text/plain; charset=utf-8

[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8

 

tree

tree -L 1
# 列出当前文件夹的第1层级

 

了解

basename

dirname

写脚本用的

chattr

用来改变文件属性

chattr +i /etc/fstab
# 防止文件被修改和删除
chattr -i /etc/fstab
# 移除属性

 

lsattr

查看文件的第二扩展文件系统属性

lsattr file

 

 

md5sum

计算和校验文件报文摘要的工具程序

md5sum test.sh
# 记录文件的md5sum值,若文件被修改,其值也会变,防黑客用

 

# 检查文件testfile是否被修改过
md5sum testfile > testfile.md5
# 首先生成md5文件
md5sum testfile -c testfile.md5
# 检查文件

 

3.查看文件及内容处理命令 (19个)

vi vim

:set nu  # 打印行号
:wq!	 # 强制保存

shift+g # 跳到最后一行
shift+zz # 强制保存并退出
gg # 跳到第一行
dd # 删除当前行
3dd # 删3行
yy # 复制当前行
p # 粘贴在光标下方
o # 进入编辑模式,并往下方插入一行

 

cat

cat > test.java <<EOF
> 1
> 2
> 3
> EOF
# 清空原内容,标准追加新内容

 

more

显示文件内容,每次显示一屏

  • Space 键:显示文本的下一屏内容。

  • Enter 键:只显示文本的下一行内容。

  • 按H键:显示帮助屏,该屏上有相关的帮助信息。

  • 按B键:显示上一屏内容。

  • 按Q键:退出more命令。

 

head

cat test.java | head -n 2
# 查看文件前两行

 

tail

默认输出文件的末尾10行

cat test.java | head -n 2 | tail -n 1
# 查看文件第2行

 

tail test.java
# 实时查看文件后10行

 

 

sort

对文本文件中所有行进行排序

cat 1.txt | sort -nr
# 打印文件内容,并进行降序排序

 

 

 

netstat -ant | awk 'NR>1{print $NF}' |sort |uniq -c
# 打印最后一列,排序,去重并统计

 netstat -ant | awk 'NR>1{print $NF}' |sort |uniq -c|sort -nrk 1
 # 在上图的基础上再排序,倒叙,以第一列
 # -n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位

 

ifconfig ens33|awk 'NR==2{print $2}'
# 提取网卡ip
# ip于第2行 第2个

 

uniq

显示或忽略重复的行

uniq test

wc

统计文件的字节数、字数、行数

-c # 统计字节数,或--bytes:显示Bytes数。
-l # 统计行数,或--lines:显示列数。
-m # 统计字符数,或--chars:显示字符数。
-w # 统计字数,或--words:显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
wc -l test
# 统计文件行数

cat test|wc -l
# 统计文件行数

 

 

grep egrep

强大的文本搜索工具,一般用egrep

-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。
-o # 只输出文件中匹配到的部分。
-n --line-number         # 在显示符合范本样式的那一列之前,标示出该列的编号。
-G --basic-regexp   # 将范本样式视为普通的表示法来使用。
-i --ignore-case    # 忽略字符大小写的差别。

 

egrep -A 3 "2" test 
# 看后3行

egrep -ri -A 3 "error" app.log
# 例:查找日志文件中报错的后3行信息

 

正则表达式

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*   # 一起用代表任意字符。   
[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头,紧跟 rep 的行
\(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    
\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>      # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
x\{m\}  # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    
x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    
x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   
\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    # 单词锁定符,如: '\bgrep\b'只匹配grep。  

 

cat /etc/passwd |egrep "^root"
# 过滤文件内容以 root 开头的

 

cat /etc/passwd |egrep "nologin$"
# 过滤文件内容以 nologin 结尾的

 

cat /etc/passwd |egrep "^s"|egrep "login$"
# 过滤文件内容以 s 开头,并以 login 结尾的,不如下图方便

cat /etc/passwd |egrep "^s.*login$"

 

 

 egrep -r "error"
 # 递归查找包含 error 的文件信息

 egrep -r "error" -l
 # 递归查找包含 error 的文件

 

 

egrep "\b[1-9]\b" 1.txt 
# 过滤文件 1~9 的内容
# \b 表示字符的精准匹配

grep命令常见用法

在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:

grep match_pattern file_name
grep "match_pattern" file_name

输出除之外的所有行 -v 选项:

grep -v "match_pattern" file_name

使用正则表达式 -E 选项:

grep -E "[1-9]+"
# 或
egrep "[1-9]+"

 

tr

将字符进行替换压缩和删除

-d或——delete:删除所有属于第一字符集的字符;

将输入字符由大写转换为小写:

echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

使用tr删除字符:

echo "hello 123 world 456" | tr -d '0-9'
hello  world 

 

vimdiff

vimdiff 1.txt 2.txt
# 对比文件内容

 

dos2unix

将DOS格式文本文件转换成Unix格式

最简单的用法就是dos2unix直接跟上文件名:

dos2unix file

 

4.文件压缩及解压缩命令(1个)

tar

将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件

/home/vivek/bin/ 目录打包,并使用 gzip 算法压缩。保存为 /tmp/bin-backup.tar.gz 文件。

tar -zcvf /tmp/bin-backup.tar.gz /home/vivek/bin/

5.信息显示命令(3个)

uname

uname -a
# 看内核的

 

hostname

hostname
# 看主机名的

hostname -I
# 看网卡的ip地址

 

 

stat

用于详细显示文件的状态信息

stat 1.txt 

 

 

 

 

 

6.深入网络操作命令(7个)

nslookup

查询域名DNS信息

nslookup www.baidu.com

 

[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 233.5.5.5
nameserver 114.114.114.114

 

dig

域名查询工具

dig www.baidu.com

 

traceroute

显示数据包到主机间的路径

traceroute www.baidu.com

 

mtr

也是跟踪路由的

mtr www.baidu.com
# 快速探测,可以看到实时丢包率,和平均延时
# 在 121.14.67.190 这个路由器有丢包

tcpdump

抓包工具,嗅探器

tepdump -i any not arp and not port 22 -nn
# 过滤有关arp协议的,并且端口不是22的包

 

nmap

扫描服务器所开放的端口

nmap www.baidu.com
# 扫描到百度开放了 80 和 443 端口

nmap 192.168.1.170
nmap 127.0.0.1
# 扫描自身服务器开放的端口

 

lsof

用于查看你进程打开的文件

lsof -i:80
# 查看服务器 80 端口的连接

 

lsof /usr/sbin/sshd
# 找出谁在使用某个文件

 

lsof -i tcp
# 列出所有TCP网络连接

 

7.有关磁盘与文件系统的命令(5个)

mount umount

用于挂盘

df

df -h
# -h	以可读性较高的方式来显示信息

 

df -i
# -i	显示inode的信息

 

df -h|awk '/boot/{print $5}'|sed -r 's#%##g'
# 筛选 /boot 打印第5列,把 % 替换为空,打印出 15
used=$(df -h|awk '/boot/{print $5}'|sed -r 's#%##g')
# 设置变量 used
[ $used -gt 50 ] && echo "warning"||echo "normol"
# 对语句做判断:若该值大于50则返回“warning”,否则返回“normal”

 

du

du -sh ./*
# -s     仅显示总计,只列出最后加总的值。
# -h     以K,M,G为单位,提高信息的可读性。

 

du -sh ./* |sort -hr
# 对根目录从大到小排序
# 一般针对 /usr (自定义软件)和 /var (日志文件)两个目录进行清理优化

 

fdisk

查看磁盘使用情况和磁盘分区

fdisk -l

 

resize2fs

用于调整ext2、ext3或ext4文件系统的大小。它可以用来扩容或缩小位于设备上的已卸载的文件系统。

 

8.关机命令

shutdown

 

9.系统管理相关命令(6个)

uptime

查看Linux系统负载信息

uptime
# 输出 系统时间 运行的时间 当前登录的用户数 系统负载平均值
# 负载是代表整个系统的繁忙程度,负载数和cpu数绑定

 

top

实时查看系统的运行状态

top交互命令

1:看cpu
k:终止一个进程;
q:退出程序;
m:切换显示内存信息

 

free

显示内存的使用情况

free -h

 

vmstat

显示虚拟内存状态

vmstat 1 10
# 1秒执行10次,一般看 r 进程数

字段说明:

Procs(进程)

  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)

  • b: 等待IO的进程数量。

Memory(内存)

  • swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。

  • free: 空闲物理内存大小。

  • buff: 用作缓冲的内存大小。

  • cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

  • si: 每秒从交换区写到内存的大小,由磁盘调入内存。

  • so: 每秒写入交换区的内存大小,由内存调入磁盘。

注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

  • bi: 每秒读取的块数

  • bo: 每秒写入的块数

注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

  • in: 每秒中断数,包括时钟中断。

  • cs: 每秒上下文切换数。

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

  • us: 用户进程执行时间百分比(user time)

us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

  • sy: 内核系统进程执行时间百分比(system time)

sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

  • wa: IO等待时间百分比

wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

  • id: 空闲时间百分比

 

mpstat

显示多个可用CPU的状态

mpstat -P ALL

表头含义

  • %user:表示处理用户进程所使用CPU的百分比。

  • %nice:表示在用户级别处理经nice降级的程序所使用CPU的百分比。

  • %system:表示内核进程使用的CPU百分比。

  • %iowait:表示等待进行I/O所占用CPU时间百分比。

  • %irq:表示用于处理系统中断的CPU百分比。

  • %soft:表示用于处理软件中断的CPU百分比。

  • %steal:在管理程序为另一个虚拟处理器服务时,显示虚拟的一个或多个CPU在非自愿等待中花费的时间的百分比。

  • %guest:表示一个或多个CPU在运行虚拟处理器时所花费的时间百分比。

  • %gnice:表示一个或多个CPU在运行经nice降级后的虚拟处理器时所花费的时间百分比。

  • %idle:CPU的空闲时间百分比。

 

iostat

iostat
# 显示系统整体的读写速率

  • tps:事务

  • kB_read/s:读取的速率

  • kB_wrtn/s:写入的速率

 

10.系统安全相关命令

chmod

chmod +x file
# 默认权限为 644 ,若文件为脚本文件,需要多 +x

 

chown

用来变更文件或目录的拥有者或所属群组

 

visudo

对/etc/sudoers这个文件,进行编辑的专属命令,该文件定义了具有管理员权限的用户和组

useradd test
# 添加 test 用户
visudo
# 在文件中添加 test 用户管理权限

su - test
su - root
# 切换 test 用户,无需密码登录

 

sudo

以其他身份来执行命令,相当于皇帝

sudo mkdir -p test
# 执行命令,且无需输入密码

sudo su - root
# 执行命令,且无需输入密码

 

passwd

passwd
# 修改用户密码

 

11.查看系统用户登陆信息的命令

whoami

打印当前有效的用户ID对应的名称

whoami

 

who

显示当前所有登陆用户的信息

who

 

w

显示目前登入系统的用户信息

w

 

last

一般看系统的登录次数和重启时间

last

 

last -n IO
# 看什么时候系统登录和宕机了,防黑客

 

12.其他命令

echo

打印

name=yuanbao
# 设置变量
echo 'name:$name'
# 打印单引号'',所见即所得
echo "name:$name"
# 打印双引号"",自动解析值

选项

-e:启用转义字符。
-E: 不启用转义字符(默认)
-n: 结尾不换行

使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \a 发出警告声;

  • \b 删除前一个字符;

  • \c 不产生进一步输出 (\c 后面的字符不会输出);

  • \f 换行但光标仍旧停留在原来的位置;

  • \n 换行且光标移至行首;

  • \r 光标移至行首,但不换行;

  • \t 插入tab;

  • \v 与\f相同;

  • \\ 插入\字符;

  • \nnn 插入 nnn(八进制)所代表的ASCII字符;

echo -e "123\n456"
# \n 转义字符换行

 

rpm

选项

-a:查询所有套件;
-e:删除指定的套件;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-i:显示套件的相关信息;
rpm -qa|grep vim

 

yum

参数

install:安装rpm软件包;
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。

常用命令

yum install -y package
yum remove package
yum list 
yum search
yum clean
yum makecache

 

date

 date -s 14:18
 # 修改时间

date +%F
date +%F-%T
# 自动解析查看所需格式时间,可写入脚本命令

date +%s
# 自动解析打印出时间戳

 

clear

清屏

 

history

查看历史命令

history -d 2243
# 删除指定行号

 

vim ~/.bash_history
# 储存历史记录的文件

 

nohup

将程序以忽略挂起信号的方式运行起来

nohup sh dates.sh &

 

watch

watch -d uptime
# 查看状态,发生变化会高亮标出

 

xargs

给其他命令传递参数的一个过滤器

cat /etc/passwd|awk -F: '{print $1}'|xargs -i mkdir -p {}
# awk打印第一列,不加-F就默认空格

cat /etc/passwd|awk -F: '{print $1}'|xargs -n 4|column -t
# xargs 排成4列,column 格式化列显示

 

bc

用于计算

echo "1+1"|bc

 

expr

表达式计算

expr 1 + 2
# 注意要加空格

 

time

time nslookup www.baidu.com
# 打印执行 nslookup www.baidu.com 命令的时间

 

13.进程管理命令

kill

杀掉进程

kill 30521
# 终止进程
kill -9 30521
# 强制终止进程

 

killall

使用进程的名称来杀死一组进程

killall dates

 

ps

查看进程

ps aux|grep sshd

 

pstree

以树状图的方式展现进程之间的派生关系

 

crontab

设置定时

crontab -l
# 打印自动同步的时间文件的内容
crontab -e
# 编辑该文件
# * * * * * 
# 分 时 日 月 周
# */5 * * * * 每5分钟执行一次
# 0 0 */1 * * 每天晚上0点执行一次(/1 可以去掉)
# 0 0 * * * 每天晚上0点执行一次

 

14.Linux剑客

sed

替换文本中的字符串

sed 's/book/books/' file
# 将 file 文件中的book替换为books

直接编辑文件 选项-i ,会匹配file文件中每一行的所有book替换为books:

sed -i 's/book/books/g' file

 

awk

文本和数据进行处理的编程语言

posted on 2023-04-01 15:54  暗狱碳水  阅读(28)  评论(0编辑  收藏  举报