Linux命令
Linux命令
标签分类:命令
1.ls
看当前目录下有什么东西
-a 看当前目录以及隐藏目录(“.”“..”)
-A 与-a基本类似,但是不显示“.”和“..”两个隐藏的目录
-l 以长格式显示文件和目录的列表(看详细信息)
-d 显示目录本身的属性,常与-l同时使用
-h 以更人性化的方式显示出目录或文件的大小,常与-l同时使用
-R 以递归的方式显示出目录或文件的大小,常与-l同时使用
-lt 以时间顺序排序
-lrt 以时间倒序排序
-lh 显示数据信息大小,以人类可读的方式显示
[root@jumpserver ~]# ll
total 8
-rw-r--r-- 1 root root 47 Oct 17 23:50 aaa 文件
brw-rw---- 1 root cdrom 11, 0 Oct 23 08:50 /dev/sr0 文件
drwxr-xr-x 2 root root 51 Oct 17 23:27 test 目录
- 代表文件
b 代表块设备文件
d 代表目录
l 代表软连接
2.cd
切换目录,只能指向目录,不能指向文件
cd / 去根
cd . 去当前目录
cd .. 去上级目录
cd ~ 去当前用户目录
cd - 去上一次去的目录
3.pwd
查看当前位置的绝对路径
4.mkdir
创建目录
-p 一次性创建多个目录
-v 显示详细
5.touch
创建文件(同一目录下不能有同名的文件)
一次性创建多个文件touch test.txt{1..10}
6.rm
删除命令
-f强制不提示
-r递归删除
注:一般用rm -rf直接删除文件或目录
7.echo
屏幕输出
echo “nihao” >> test.txt
注:>输出重定向 原理:先清空,后把东西写入文件
注:>>追加输出重定向 原理:直接在文件的末行追加内容
[root@localhost ~]# echo -e "aa\nbb" >>yyy #-e,激活转义符\n
[root@localhost ~]# cat yyy
aa
bb
输出序列
#控制位数,并输出有序序列
[root@redis ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@redis ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@redis ~]# echo {001..10}
001 002 003 004 005 006 007 008 009 010
输出奇数和偶数序列
[root@redis ~]# echo {1..10..2}
1 3 5 7 9
[root@redis ~]# echo {2..10..2}
2 4 6 8 10
8.cat
直接打开一个文件,看文件内容
-n显示行号
作用:可以向文件中追加多行内容
[root@redis ~]# cat aa
welcome to beijing
# 向文件中追加内容 # 特别注意:cat后必须跟 >> 才是追加,>是清空然后追加
[root@redis ~]# cat >> aa <<EOF
> aa
> bb
> cc
> EOF
[root@redis ~]# cat aa
welcome to beijing
aa
bb
cc
[root@redis ~]# cat > aa <<EOF # 清空文件后再追加
> cc
> dd
> EOF
[root@redis ~]# cat aa
cc
dd
作用:cat还可以对文件进行合并语法:cat 待合并的文件路径1 待合并的文件路径2 待合并的文件路径3 ······ 文件路径n >合并后的文件路径
[root@localhost ~]# cat aa
111
[root@localhost ~]# cat bb
222
[root@localhost ~]# cat cc
333
[root@localhost ~]# cat aa bb cc
111
222
333
[root@localhost ~]# cat aa bb cc >hello
[root@localhost ~]# cat hello
111
222
333
9.cp
复制 把什么复制到哪里去叫什么
cp /tmp/test . 把/tmp/test复制到当前目录
-r递归,把所有(目录及目录下的文件)的都复制过去
-p复制文件时保持文件的属性不变
-a等同于-dpr
10.mv
移动命令 把什么 移动到哪里去叫什么
在linux中,mv可以直接重命名(即移动改名)例如:mv /test /test.txt
-f 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-b 若需覆盖文件,则覆盖前先行备份。
11.find
精细查找文件或目录(f或d)
-name按名称查找 例:find /etc -type f -name “*k*” 寻找/etc
下含有k的文件
-size按大小查找
-mtime按时间查找
find . -type f -name “test”寻找当前目录下名字为test的文件
find . -type f !-name “test”寻找当前目录下名字不为test的文件
把当前目录下名字含有test的文件移到/tmp下
(1)find . -type f -name “test” | xargs -i mv {} /tmp/
(2)find . -type f -name “test” -exec mv {} /tmp \;
12.type
看一个命令是内部命令还是外部命令
[root@k8s-master01 ~]# type cd
cd is a shell builtin # [cd 是一个内部命令]
[root@k8s-master01 ~]# type tree
tree is /usr/bin/tree # [ifconfig 是一个外部命令]
13.help
内部命令帮助,查看bash内部命令的帮助
用法(1)help 内部命令 help cd
用法(2)命令字 --help ls --help
14.man
用来提供在线帮助,使用权限是所有用户。
在linux系统中存储着一部联机使用的手册,以供用户在终端上查找。使用man命令可以调阅其中的帮助信息,非常方便实用。
用法:man [命令] man ls
15.du
用于统计制定目录或文件所占用磁盘的大小(一般直接用 du -sh查看大小)
格式:du[选项] 目录或文件名
-a 统计磁盘空间占用时所有的文件,而不仅仅是统计目录
-s 只统计所占用空间总的大小
注:du -sh ./* 工作当中清空大文件,手动清空需要用du -sh ./*命令一层一层的进入到目录里去手动排查。
16.which
查找linux命令程序所在的位置
格式:which 命令|程序名 which du
注意:默认当只熬到第一个目标后不再继续查找,若需要查找全部,加选项-a
17.bash
重新建立一个shell
18.exit
退出当前shell
19.stat
查看详细信息(三个时间)
stat -c %a 文件 查看文件属性权限(以数字形式显示)
stat -c %A 文件 查看文件属性权限(以字母形式显示)
20.七个看(cat,tac,nl,more,less,head,tail)
cat查看文件内容,可同时显示多个文件的内容
-n显示行号
-A显示所有的字符(通过windows系统拷贝过来的件无法直接cat到,需要加此选项)
more一点一点看(只能往下走),看完就出来了
less 可以上下翻着看,看完出不来(ctrl+z出去)
head 默认从上往下看十行,head -2 从上往下看两行
tail 默认从下往上看十行,tail -3 从下往上看三行
tail -f == tailf 动态监控文件内容变化
21.wc
统计文件内容
wc 文件 查看【行数,单词数,字节数】
-l 统计行数
-w 统计单词个数
-c 统计字节数
22.gzip
压缩
格式:gzip [-9] 文件名
将指定的文件进行压缩,压缩包默认会以“原文件名.gz”保存到当前工作目录下,原文件会被自动删除
-k 将指定的文件进行压缩,但是不删除原文件:
注:选项1-9为压缩级别,数字越大压缩级别越高,压缩后文件格式为“.gz”
23.gzip -d
解压
作用:解压缩格式为“.gz”和“.bz2”的压缩文件
gzip -d 文件名
24.tar
归档命令
作用:制作归档文件,释放归档文件
归档格式:tar 参数 归档文件名 源文件或目录
释放格式:tar 参数 归档文件名 -C 指定到哪个目录
-z 调用gzip程序进行压缩或解压
-j 调用bzip2程序进行压缩或解压
-c 创建.tar格式的包文件
-v 输出详细信息
-f 表示使用归档文件(后面需要紧跟归档文件名)
-x 解开.tar格式的包文件
-C 解包时指定释放的目标目录
--exclude 排除某个文件再打包
例:打包压缩(排除test1这个文件)tar zcvf xiaohong.tar.gz xiaohong--exclude “test1”
参数前可以不加“-”,如果加“-”,f参数必须在最后
解压 tar xf xiaohong.tar.gz -C /root 解压时要解压到其他目录
打包压缩的三个潜规则:
(1)打包目录时必须压缩;
(2)压缩必用.tar.压缩格式;
(3)必须要 当前(相对路径)压缩。
25.grep
过滤(linux三剑客之一)
-A n (n是一个整数) 表示将匹配行的后n行也显示
-B n (n是一个整数) 表示将匹配行的前n行也显示
-C n (n是一个整数) 表示将匹配行的前n行和后n行也显示
-n 显示行号
-i 忽略大小写
-v 取反
-o 只输出匹配到的内容
-w 精确匹配
-l 显示匹配到内容的文件名
-r 过滤目录以及子目录下的文件和目录
-E =egrep egrep支持基础正则和扩展正则表达式,grep只支持基础正则
-c 显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到
26.vim
linux文本编辑器
插入
I 在行首插
A 在行尾插
o 往下插
O往上插
i 在光标前插
a 在光标后插
光标移动
G 跳到末行
gg 跳到首行,
11gg 跳到11行
ctrl+a在命令行下移动到行首
ctrl+e在命令行下移动到行尾
0移动到行首()
$移动到行尾
h:左移一个字符
j :下移一个字符
k:上移一个字符
l :右移一个字符
点【.】命令
点命令【.】含义是重复上次修改,上次修改的单位可以是字符,整行,甚至整个文件。 因此如果删除整行【dd】,配合【.】也可以起到重复操作的目的。
点命令最大的用处在于,每次从输入模式到命令模式切换时,整个阶段vim会记录每一个按键操作,使用点命令可以重新执行所有的这些按键操作,就好像“一键回放”,我们可以把点命令当成一个宏。
比如要给结构体语句添上‘;’号, 按照常规方法做会比较慢,这时候光标先移动到第一条语句上,【A】【;】【ESC】 ,再反复使用【j】【.】即可。
删除操作
dd 剪切
d0 删除到本行行首的位置
d$ 删除光标所在处,到该行的最后一个字符
d^ 删除光标所在处,到行首的一个字符
P(小写) 粘贴
u 撤销
shift+D 删除光标之后
shift+C 回到命令模式
shift+zz 保存并退出
ctrl+v 然后按“上下左右”可以选择【可视块】,然后按下d,可以删除
文件保存与不保存退出
shift + zz 保存并退出
wq 保存退出
q! 强退
e! 恢复到初始状态(刚进来,没有修改时的状态)
粘贴出现乱码解决方法
如果粘贴出现乱码(每次都缩进),我们可以用(在命令行模式:模式输入set paste)进入paste模式以后,可以在插入模式下(按下i)粘贴内容,不会有任何变形。
进入visual模式的批量修改,方法如下:
(1)ctrl+v进入列编辑模式
(2)向下或向上移动光标,把需要注释,编辑的行的开头选中
(3)然后按下大写的I
(4)在插入注释符或者你想插入的符号,比如"#"
(5)在按下esc,就会全部注释或添加了。
自定义vim使用环境
1,临时设置
:set nu #设置行号
:set nonu #取消设置行号
:noh #取消高亮显示
2,永久设置环境
vim /etc/vimrc #设置后会影响所有的用户
vim /root/.vimrc #设置后只会影响root用户
3,vim打开多个文件
方法一:以上下形式,打开两个文档
方法二:以左右形式,打开两个文档
单行内单字符搜索跳转
1. f接目标字符:如f+,搜索同一行内下一个+位置
2. ;的作用:跳转到下一个f搜索的位置
3. ,的作用:跳转到上一个f搜索的位置
全局替换
:%s/60/80/g # 替换全部(将60替换成80)
:5s/80/70/g # 替换第5行(将80替换成70)
27.rpm
包安装
-qa 查看所有已安装的RPM软件包
-ql 查询软件包安装的目录和文件列表
-qf 查看软件安装的安装包叫什么名字
例:rqm -qf /usr/bin/vim (必须用绝对路径)
-q 精确查找安装包是否已经安装了
-ivh 安装(-i安装一个新的rpm软件包,-v显示安装过程中的详细信息,-h 以“#”显示安装的进度)
-e 卸载
--nodeps 强制卸载
28.mount
挂载命令
例:mount /dev/sr0 /media/cdrom
mount -a 把fstab里写了的没有挂载的全部挂载上
umount -a 把fstab里没写的但是已经挂载的全部卸载了
mount -o loop ISO镜像文件
mount -o rw, remount /
29.Yum
包管理工具
(1)进行偷包
使用环境:在一台没有外网的服务器上安装软件,yum down 下来的软件包是rpm包
```
# yum install -y --downloadonly --downloaddir=/root/ wget
rpm -ivh 对应的rpm包 --nodeps --force
```
(2)寻找命令所属的软件包(然后安装对应的软件包,有的命令需要用到,因为有的命令不的 软件包名不是命令本身)
```
# yum provides *bin/wget
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
wget-1.14-18.el7_6.1.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
源 :base
匹配来源:
文件名 :/usr/bin/wget
wget-1.14-18.el7_6.1.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
源 :@os
匹配来源:
文件名 :/usr/bin/wget
```
30.useradd
创建用户
格式 useradd [参数] 用户名
-u 指定uid标记号
-d 指定宿主目录,缺省默认为/home/用户名
-e 指定账号失效时间 -e 30day -e 2019-09-01
-M 不为用户建立初始化宿主目录
-s 指定用户的登录shell -s /sbin/nologin/
-g 指定用户的基本组名(如果指定,必须先创建组)
例如:useradd -M -s /sbin/nologin 用户名(创建的是普通用户,但是没有登录权限)
31.passwd
修改用户密码
passwd 用户 (给用户设置密码)
-d 清空用户的密码
-l 锁定用户的账号
-S 查看用户账号的状态
# 免交互设置用户密码 echo “111111” | passwd --stdin www
32.userdel
删除用户账号
-r 删除用户的同时删除用户的宿主目录
33.usermod
修改用户属性
-l 更改用户账号的登录名字
-c 修改用户备注
-L 锁定用户账号
-U 解锁用户账号
34.id
查看系统下有没有此账号
id 账号
直接输入id 查看账号信息(默认当前用户)
35.groups
查看所属组
36.finger
查看账号的详细信息
格式:finger [用户名]
```
[root@k8s-master01 ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Wed Nov 9 20:14 (CST) on pts/2 from 192.168.0.1
4 seconds idle
New mail received Wed Nov 9 20:30 2022 (CST)
Unread since Wed Aug 4 18:15 2021 (CST)
No Plan.
```
37.w
查询已登录到主机的用户信息
38.whoami
查询当前登录的账号名
39.who
与w命令相似,查询已登录到主机的用户
40.chmod
设置文件或目录的权限
-R 表示以递归的方式设置目录及目录下的所有子目录及文件的权限
-u 属主
-g 属组
41.chown
设置文件的归属
chown 属主 文
chown 属组 文件
chown 属主:属组 文件
42.umask
权限掩码
超户原来是0022
可以改 例:umask 0011
43.fdisk -l
查看磁盘情况
44.mkfs
格式化
Mkfs -t ext4 /dev/sdb1 或 mkfs.ext4 /dev/sdb1
45.partx
刷新分区(探测分区)
part /dev/sdb1
46.df -h
查看磁盘挂载情况 -h 显示容量单位
df -hT 同上,多显示了文件系统的类型
df -hTi 多显示了inode数量
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 1.1G 16G 7% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/cdrom
192.168.200.160:/gs1 20G 301M 19G 2% /mnt
[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 18G 1.1G 16G 7% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
/dev/sr0 iso9660 4.2G 4.2G 0 100% /media/cdrom
192.168.200.160:/gs1 nfs 20G 301M 19G 2% /mnt
[root@localhost ~]# df -hTi
Filesystem Type Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root ext4 1.1M 27K 1.1M 3% /
tmpfs tmpfs 123K 1 123K 1% /dev/shm
/dev/sda1 ext4 126K 38 125K 1% /boot
/dev/sr0 iso9660 0 0 0 - /media/cdrom
192.168.200.160:/gs1 nfs 1.3M 97 1.3M 1% /mnt
47.mkswap
格式化(虚拟分区)
mkswap /dev/sdb5
48.swapon
挂载虚拟分区
swapon /dev/sdb5 自动挂载到指定的目录
49.swapon -s
查看已经挂载的虚拟磁盘
50.swapoff
卸载虚拟磁盘
swapoff /dev/sdb5
51.free -m
看内存(以兆的形式显示)
52.parted
规划大小超过2T的分区,也可以用于小分区的规划
53.runlevel
看启动级别
>注:启动级别配置文件: /etc/inittab
N 3 会出现两个
N意思是上一次启动级别为空
0 关机
1 单用户模式
2 没有NFS网络文件系统的多用户模式
3表示多用户模式或命令模式
4 保留模式
5 桌面模式
6 重启
54.pvcreate
建立物理卷管理
55.vgcreate
56.lvcreate
57.blkid
设备 查看设备的UUID号
例:blkid /dev/vg0
注:如果有UUID号,说明格式化成功了
58.lvextend -L +5G /dev/vg0/xuexi
扩容
59.resize2fs
【动态扩容】格式化扩容的那部分,同时保留原来文件
60.mdadm
配置软件RAID
-C创建一个新的软RAID
-v 显示细节
-l 设置RAID的级别
-x 指定阵列中的备用磁盘数
-D 输出指定RAID设备的详细信息
例:mdadm -Cv /dev/md5/ -l5 -n3 -x1 /dev/sd[bcde]
mdadm -D /dev/md5 进去看同步率
61.sed
(增删改查)
-i 直接对源文件进行修改,如不加-i源文件没有变化
例:sed -i ‘s#web#local#g’ /etc/sysconfig/network
-n 取消默认的sed软件的输出,常与sed命令的P连用
“a”:追加文本到指定行后,记忆方法:a的全拼是apend,意思是追加
“i“:插入文本到指定行前,记忆方法:i的全拼是insert,意思是插入。
在第十行上一行插入 sed ‘10i xxx’ test
在第十行下一行插入 sed ‘10a xxx’ test
在第十行到二十行上都插 sed ‘10,20i xxx’ test
在第十行到最后一行下都插 sed ‘10,$a xxx’ test
在第十行前插xxx sed ‘ 10s#^#xxx#’ test
在第十行后插xxx sed ‘10s#$#xxx#’ test
sed -r 支持扩展正则
sed ‘d’ test 全删
sed ‘2d’ test 删第二行
sed ‘2,5d’ 删二到五行
sed ‘/zhangyang/d’ test 删含有指定内容的行
sed ‘/chen/,/wang/d’ 删含有chen 的行到含有wang的行
sed ‘3,$d’ 删3到最后一行
sed ‘/chen/,3d’ 删含有chen 的行到第三行
62.dd
通常用dd 命令来检测磁盘的性能
dd if=/dev/zero of=/dev/sda bs=1M count=1000
if 从哪里提取数据
Of 到哪里去
bs 大小
count 次数
/dev/zero/ 无限数据流文件(空文件)
63.service
服务
service iptables start 启动防火墙服务
start 开启
stop 停止
restart 重启
status 状态
reload 平滑重启
注:/etc/init.d/ 放的服务的启动脚本,可以tab 出来
64.lsof
(list openfiles)是一个列出当前系统打开文件的工具。
-c 进程名 显示指定的进程名所打开的文件
-p 进程号 显示指定的进程号所打开的文件
-i 通过监听指定的协议,端口和主机等信息,显示符合条件的进程信息
例:losf -i tcp:22
65.pstree
以树形结构列出进程信息
-a 显示完整信息
-u 列出对应用户名
-p 列出对应pid号
66.top
(动态命令) ctrl+c 直接退出(或者用q)
-d 指定刷新的间隔时间,单位秒
-b 以批量处理模式操作,一般与-n同时使用
-n 指定循环显示的次数
-u 指定用户名
-p 指定进程号
注:输入top命令按“1”,就可以看到系统的逻辑CPU数
输入大写的“M”M是按内存排序,
输入大写的“P”P是按CPU排序
```
[root@localhost ~]# top
top - 20:48:12 up 1 day, 8:32, 1 user, load average: 0.54, 0.45, 0.39
Tasks: 199 total, 1 running, 134 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.0 us, 6.0 sy, 0.0 ni, 89.3 id, 0.4 wa, 0.0 hi, 0.4 si, 0.0 st
KiB Mem : 4015232 total, 290164 free, 1610544 used, 2114524 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2059208 avail Mem
# ![image.png-48.8kB][1]
第一行是CPU在1,5,15分钟的平均负载值,等同于`uptime`命令的效果
```
67.pgrep
根据特定条件查询PID信息
-l 显示进程名
-U指定特定用户
-t 指定终端
68.进程的前后台调度
ctrl+z 将当前进程挂起,即调入后台并停止执行
jobs 查看后台的任务列表,加-l同时显示pid号
fg 将后台进程恢复到前台运行,可指定任务程序号
bg 将后台暂停的进程调至后台运行
69.终止进程的运行
ctrl+c 中断正在执行的命令
kill 用于终止指定pid号的进程 -9选项用于强制终止
killall 用于终止指定名称的所有进程
pkill 根据特定条件终止相应的进程
-U 根据进程所属的用户名终止相应的进程
-t 根据进程所在的终端终止相应进程
70.crontab
定时任务
-e 编写定时任务
-l 查看当前的定时任务
-r 删除定时任务
crontab -u 指定看哪个用户的定时任务(不指定默认看当前用户)
注:定时任务的日志文件:/var/log/cron
定时任务的配置文件:/etc/crontab
71.i锁
(锁定账号文件)超户才能用。一般用于锁定账号的添加
锁定 chattr +i 文件
解锁 chattr -i 文件
查看 lsattr 文件特殊权限
注:锁定后超户也不能够修改该文件,即不能创建,删除,修改用户信息,锁定后变成了只读文件
72.a锁
(用法同i锁)锁定后内容只能>>重定向进文件,不能用vim添加。
73.history
查看历史命令
-c 清空历史命令
export HISTSIZE= 修改保留历史命令的条数
74.su
切换用户
作用:切换用户
格式:su - 目标用户
格式:su - 用户名 -c 命令 临时切换到该用户执行命令
#有“-”初始化环境变量,无“-”环境变量不改变
[root@ansible ~]# pwd
/root
[root@ansible ~]# su - yunjisuan
Last login: Fri Feb 21 09:20:54 EST 2020 on pts/2
[yunjisuan@ansible ~]$ pwd
/home/yunjisuan #改变了环境变量
[yunjisuan@ansible ~]$ exit
logout
[root@ansible ~]# su yunjisuan
[yunjisuan@ansible root]$ pwd
/root #环境变量未改变
#普通用户切超户需要输入密码
[yunjisuan@ansible root]$ su -
Password:
Last login: Fri Feb 21 09:21:44 EST 2020 on pts/2
# su - 用户名 -c 命令 临时切换到该用户执行命令
[yunjisuan@ansible ~]$ su - root -c 'ls /root'
Password:
anaconda-ks.cfg
75.sudo
提权,临时将普通用户的权限提升至超户
```
# sudo -l 查看权限
[yunjisuan@ansible ~]$ sudo -l
User yunjisuan may run the following commands on ansible:
(ALL) NOPASSWD: ALL
```
76.visudo
本质上是用vim打开/etc/sudoers/修改,但是不能用vim修改
77.df -i
查看inode的使用和剩余情况
78.ln
给文件创建硬链接(目录不能创建硬链接)
ln test test.t
-s 创建软连接(文件或目录) ln -s test test.txt
79.清空文件test
这么写 >test “>”意思是先清空,后写入。将“空”写入文件test,即清空文件。
80.sort
排序
-n 按数字升序排列
-nr 按数字降序排列
-k 指定列数
-t 指定分隔符
sort -n -k 2 -t: 文件名 指定以:为分隔符的第二列进行升序排列
81.uniq -c
去重并计数
82.xargs
将换行符换成了空格
-n 和独立的xargs一起使用,这时按照每个空格分段划批,比如说-n2,就是说以空格划分,两段一行进行划分
83.取随机数,并加密
echo “$RANDOM” 取随机数,最多五位
echo “$RANDOM” | cut -c 1-3 取一到三位
echo “$RANDOM” | md5sum 加密
md5sum是根据内容加密的,一般用来验证数据的完整性
84.sh
sh -n [script.sh] 检查脚本语法错误
sh -x [script.sh] 脚本一步一步执行,用于排错
85.ping
测试网络的连通性
-c 指定发送数据包的个数
-i 当ping通时,指定间隔多少秒发送下一个数据包
-w 当ping不通时,指定间隔多少秒发送下一个数据包
-s 指定数据包大小
86.设置selinux
setenforce 0 临时关闭selinux安全机制
getenforce 查看selinux状态
88.test
判断目标是目录还是文件
test -d 判断目标是否是目录
test -f 判断目标是否是文件
test -z 判断目标是否是空文件
89.lrzsz
可以将windows里的东西直接拖进linux
注:用本地yum就可以装,yum -y install lrzsz,装完后有两个命令,rz和sz
rz:从本地上传文件到linux服务器
sz:从linux服务器传送文件到本地(利用的是ZModem协议,一次可以传送一个或多个文件)
90.cat > test << kof
cat追加输入内容,输入kof时停止输入,直接把kof上面的内容,重定向到test文件里
tee 重定向的用法和cat一样
91.date
显示时间
格式化显示:年月日时分秒
[root@k8s-master01 ~]# echo `date +%Y-%m-%d_%H:%M:%S`
2022-11-11_22:20:23
# 显示前[1/2天]的时间
[root@k8s-master01 ~]# echo $(date -d "1 day ago" +%Y-%m-%d_%H:%M:%S)
2022-11-10_22:24:09
[root@k8s-master01 ~]# echo $(date -d "2 day ago" +%Y-%m-%d_%H:%M:%S)
2022-11-09_22:24:12
[root@k8s-master01 ~]# echo $(date -d "3 day ago" +%Y-%m-%d_%H:%M:%S)
2022-11-08_22:24:17
92.rsync
-a,--archive归档模式,表示以递归方式传输文件,并保持所有文件属性
-v,--verbose详细模式输出,传输时的进度等信息
-z,--compress-level=NUM可按级别压缩
-P(大)显示同步的过程及传输时的进度等信息
--bwlimit=RATE (limit socket I/O bandwidth)限制带宽
如:rsync -avz --bwlimit=100 dbfile 192.168.200.33:/backup
93.ntpdate
ntp1.aliyun.com 同步时间阿里云
yum -y install ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'AsiaShanghai' >/etc/timezone
ntpdate time.windows.com
# 加入到crontab
*/5 * * * * /usr/sbin/ntpdate time.windows.com
94.ulimit
控制shell程序的资源
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux用户的最大进程数,我们可以用ulimit来显示当前的各种用户进程限制
语法格式:ulimit [参数]
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15580
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 655350
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
95.tcpdump
监听网络流量,数据抓包软件
96.selinux
97.ps
查看系统进程命令
ps aux 查看进程所占用的内存和CPU的百分比
ps -ef | grep 服务名 通常用来判断某个服务是否处于启动状态
-e 显示所有进程
-f 额外显示UID,PPID,C和STIME栏位
ps -p 1055 -o pid,etime,uid,gid,cmd
PID ELAPSED UID GID CMD
1055 01:06:25 1001 1001 /usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar
98.uname -r
显示操作系统的发行版本号
99.route -n
看路由表
netstat -r 看路由表
100.ifconfig
查看活动的网络接口
-a 看所有的网络接口
ifconfig 设备名 查看指定的网络接口(不论该网络接口是否处于激活状态)
101.ip link
查看网络接口的数据链路层信息
102.ip a
查看网络接口的网络层信息
103.ethtool eth0 查看指定网络接口速率,模式等信息
104.hostname
查看主机名
hostname -I 查看IP
105.netstat
命令
一般用netstat -antup
-a:显示当前主机中所有活动的网络连接信息
-n:以数字的形式显示相关信息
-t:显示TCP协议相关的信息
-u:显示UDP协议相关的信息
-p:显示与网络连接相关的进程号,进程名称信息(需要root权限)
-r:显示路由表信息
106.traceroute
命令 跟踪数据包的路由途径
-n:不执行DNS反向查找,直接显示数字形式的IP地址
例如:traceroute -n www.baidu.com
**注**:相当于Windows中的tracert -d(-d 不将地址解析成主机名)
Windows是在cmd命令提示符里面输入
tracert -d www.baidu.com
107.nslookup
命令 测试DNS域名解析
nslookup www.baidu.com就会出现根据域名解析出来的IP
注:nslookup命令需要装bind-utils插件(用yum装)
108.mysql
连接并登陆到mysql操作环境
-u 指定用户名
-p 指定密码
-h 指定主机
-P 指定端口
-U 指定数据库名
109.mysqladmin
设置数据库用户名密码
mysqladmin -u用户名 password 指定密码
110.tree
tree -L [1] 只显示第一级目录
111.telnet
远程连接
telnet 对方IP 端口号(判断对方该端口开没开,可以写在脚本里)
112.scp
软件包是openssh-clients(本地yum),装了后就有scp,没有就不能远程连接**服务端和客户端必须都有**
格式:scp -P 端口号 文件
113.systemctl
管理系统服务
114.uptime
系统负载是处于可运行runnable或不可中断uninterruptable状态的进程的平均数。可运行状态的进程要么正在使用CPU要么在等待使用CPU。不可中断状态的进程则正在等待某些 I/O 访问,例如等待磁盘 IO。
有三个时间间隔的平均值。负载均值的意义根据系统中CPU的数量不同而不同,负载为 1 对于一个只有单CPU的系统来说意味着负载满了,而对于一个拥有4CPU的系统来说则意味着 75% 的时间里都是空闲的。
# uptime
16:44:18 up 4:20, 1 user, load average: 0.93, 0.54, 0.76
# uptime -s # 显示系统开始运行的时间和日期
2022-11-12 12:23:50
# uptime -p # 显示系统运行了多长时间
up 4 hours, 20 minutes
115.curl
-k:允许curl使用非安全的ssl连接并且传输数据(证书不受信)
-K:后接参数文件,参数文件中可以定义HTTP请求的相关的内容(URL、HEAD、DATA)
116.$LANG
LANG=zh_CN.UTF8 英文切中文(临时生效)
LANG=en_US.UTF-8 中文切英文(临时生效)
117.sysctl
sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录“/proc/sys”中。
它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
sysctl命令对内核参数的修改仅在当前生效,重启系统后参数丢失。如果希望参数永久生效可以修改配置文件“/etc/sysctl.conf”。
118·expr
expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。
119.eval
Linux内置命令eval,这个命令能读入变量,并将他们组合成一个新的命令,然后
执行。首先eval会解析变量$x和变量$y,最后达到的效果和双引号是一样的。
[root@web训练 ~]# x=a
[root@web训练 ~]# y=b
[root@web训练 ~]# cat test.txt
a
b
a
[root@web训练 ~]# eval sed 's#$x#$y#g' test.txt
b
b
b
120.base64
[root@k8s-master01 secret]# echo "hello" | base64 #加密
aGVsbG8K
[root@k8s-master01 secret]# echo "aGVsbG8K" | base64 -d #解密
hello
121.alias && unalias
设置系统别名 && 取消系统别名
alias 别名='命令信息'
unalias 别名
122.shutdown
shutdown -h 5 指定关机时间
shutdown -r 5 重启主机时间
shutdown -c 取消关机或重启计划
shutdown -h now 立即关机
shutdown -r now 立即重启
123.hostnamectl
直接修改主机名
hostnamectl set-hostname 主机名
注:该命令会直接修改/etc/hostname文件,属于永久修改主机名
124.printf
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认的 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n
语法:
printf format-string [arguments...] #**format-string: 为格式控制字符串
arguments: 为参数列表
实例:
[root@halo ~]# echo "hello,world"
hello,world
[root@halo ~]# printf "hello,world" #printf 末尾没有\n
hello,world[root@halo ~]#
[root@halo ~]# printf "hello,world\n"
hello,world
接下来通过脚本来简单介绍printf
[root@halo ~]# cat printf.sh
#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.1f\n" 张三 男 66.1234
printf "%-10s %-8s %-4.2f\n" 李四 男 88.1212
printf "%-10s %-8s %-4.3f\n" 王五 男 90.1234
#执行结果:
[root@halo ~]# sh printf.sh
姓名 性别 体重kg
张三 男 66.1
李四 男 88.12
王五 男 90.123
%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数
#!/bin/bash
# format-string为双引号
printf "%d %s\n" 1 "abc"
# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc"
# 没有引号也可以输出
printf %s abcdef
# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def
printf "%s\n" abc def
printf "%s %s %s\n" a b c d e f g h i j
# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n"
# 执行结果
1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j
and 0
125.readlink
readlink -f [filename] # 查看文件的绝对路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?