Linux命令

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是按内存排序,
        输入大写的“PP是按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”。

image_1e8ojis03rie4o0i2psbn19bm9.png-52.7kB

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] # 查看文件的绝对路径
posted @   yao-yuan-ge  阅读(442)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示