shell简单技巧之一(含实用linux命令用法介绍)

shell中可能经常能看到:>/dev/null 2>&1

#知识了解,在Linux系统中
    标准输出的文件描述符为     1       #1可以不写,默认就是1
    标准错误输出文件描述符为    2
    标准输入文件描述符为      0

#分解这个组合:“>/dev/null 2>&1” 为五部分。
    1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
    2:/dev/null 代表空设备文件
    3:2> 表示stderr标准错误
    4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
    5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"

#因此,>/dev/null 2>&1 也可以写成“1> /dev/null 2> &1”

#那么本文标题的语句执行过程为:
    1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
    2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

#最常用的方式有:
    command > file 2>file  与command > file 2>&1

#它们有什么不同的地方吗?
      1、首先command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command  > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。
     2、 而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
     3、 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法。

freebsd光盘挂载freebsd磁盘,需要修复时如何处理

无法启动,挂载freebsd光驱,磁盘为/dev/da0s1a,挂不了说要修复
    fsck -fy /dev/da0s1a        # 修复后再挂载

如何显示指定pci设备的信息(根据pci地址查看其详细信息)

[root@sv-gpu-node-001 ~]# lspci | grep VGA
0b:01.0 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 (rev 0a)
85:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
86:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
87:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)
88:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2)

[root@sv-gpu-node-001 ~]# lspci -v -s 88:00.0
88:00.0 VGA compatible controller: NVIDIA Corporation GM107GL [Tesla M10] (rev a2) (prog-if 00 [VGA controller])
    Subsystem: NVIDIA Corporation Tesla M10
    Flags: fast devsel, IRQ 10, NUMA node 1, IOMMU group 79
    Memory at f7000000 (32-bit, non-prefetchable) [disabled] [size=16M]
    Memory at 39ff80000000 (64-bit, prefetchable) [disabled] [size=256M]
    Memory at 39ff90000000 (64-bit, prefetchable) [disabled] [size=32M]
    I/O ports at b000 [disabled] [size=128]
    Capabilities: [60] Power Management version 3
    Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [78] Express Endpoint, MSI 00
    Capabilities: [100] Virtual Channel
    Capabilities: [250] Latency Tolerance Reporting
    Capabilities: [258] L1 PM Substates
    Capabilities: [128] Power Budgeting <?>
    Capabilities: [420] Advanced Error Reporting
    Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
    Capabilities: [900] Secondary PCI Express
    Kernel modules: nouveau

column格式化展示

#原始数据
[root@C20220714367147 7.2.3]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=16322468k,nr_inodes=4080617,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)

#格式化后的数据
[root@C20220714367147 7.2.3]# mount | column -t
sysfs       on  /sys                             type  sysfs       (rw,nosuid,nodev,noexec,relatime)
proc        on  /proc                            type  proc        (rw,nosuid,nodev,noexec,relatime)
devtmpfs    on  /dev                             type  devtmpfs    (rw,nosuid,size=16322468k,nr_inodes=4080617,mode=755)
securityfs  on  /sys/kernel/security             type  securityfs  (rw,nosuid,nodev,noexec,relatime)
tmpfs       on  /dev/shm                         type  tmpfs       (rw,nosuid,nodev)
devpts      on  /dev/pts                         type  devpts      (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)

tr 字符转换命令

    -d b-d          :删除指定范围的字符(是删除所有b,c,d字符),删除b到d之间的所有字符
    -d 0-9          :删除所有数字。

    echo abcade | tr a-z A-Z        :表示将abcade中所有小写转换为大写,结果是ABCADE
    echo abcade | tr -d a-c         :删除所有a,b,c字符,结果是de
    echo abcaAe | tr "a-z" "\*"     # 将所有小写字符用*代替,结果是****A*

fuser 命令用法(找出umount块设备时占用块的进程id)

fuser 
    -n tcp 22       # 获取正在访问tcp 22端口的进程id。(结果必然包含sshd进程id,以及其他远程终端链接上来的进程id)

#实例一、获取访问指定端口的进程id
[root@C20230519381768 ~]# fuser -n tcp 22
22/tcp:                809  1226  1228
[root@C20230519381768 ~]# ss -tnlp | grep ssh
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=809,fd=3))                                                  
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=809,fd=4)) 

#实例二、获取正在运行的指定程序的进程id
[root@C20230519381768 ~]# fuser -u /usr/bin/vi
/usr/bin/vi:          1371e(root)
[root@C20230519381768 ~]# ps -ef |grep 1371
root        1371    1352  0 04:36 pts/0    00:00:00 vi 333.txt
root        1383    1312  0 04:38 pts/1    00:00:00 grep --color=auto 1371

#实例三、umount块设备时,提示设备正忙busy。如何才能成功umount掉
    可以先使用fuser -u 参数找出正在访问该设备的进程id。然后kill掉。再进行umount
    -um /tmp
    -um /dev/vda1

[root@C20230519381768 ~]# umount /tmp/
umount: /tmp/: target is busy
[root@C20230519381768 ~]# fuser -um /tmp/
/tmp:                 1264c(root)  1331c(root)
[root@C20230519381768 ~]# ps -ef |grep 1331
root        1331    1264  0 04:29 pts/0    00:00:00 vi 23
root        1343    1312  0 04:31 pts/1    00:00:00 grep --color=auto 1331
[root@C20230519381768 ~]# kill -9 1331
[root@C20230519381768 ~]# fuser -um /tmp/
/tmp:                 1264c(root)
[root@C20230519381768 ~]# umount /tmp/
umount: /tmp/: target is busy.
[root@C20230519381768 ~]# kill -9 1264
[root@C20230519381768 ~]# umount /tmp/

find 命令用法

#删除30天前带 ".log"的文件,如下是具体命令
        find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

    说明:
        将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:

        find:linux的查找命令,用户查找指定条件的文件;
        /opt/soft/log/:想要进行清理的任意目录;
        -mtime:标准语句写法;
        +30:查找30天前的文件,这里用数字代表天数;
        "*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
        -exec:固定写法;
        rm -rf:强制删除文件,包括目录;
        {}  :固定写法,用来代替前面查询到的输出
        \;  :固定写法,因为exec格式的必须以分号;结尾,所以这里用\进行转义。

innode满了,如何查询那个目录下文件最多

先从/下开始找,后面可以再从具体的目录下找一次
    for i in /*; do echo $i; find $i |wc -l|sort -nr; done

然后将目录下文件多的删掉一些
    find /var/log/nginx -type f |xargs rm -rf

linux如何删除乱码文件(根据innode来删除)

root@cka-n1:~# ls
''$'\233\276''V'$'\333''܁}H'$'\341''_'$'\373\220'   crictl-v1.24.2-linux-amd64.tar.gz

root@cka-n1:~# ls -i
  27 ''$'\233\276''V'$'\333''܁}H'$'\341''_'$'\373\220'  1737  crictl-v1.24.2-linux-amd64.tar.gz

root@cka-n1:~# find -inum 27 -exec rm -rf {} \;
root@cka-n1:~# ls
crictl-v1.24.2-linux-amd64.tar.gz

linux如何查看网卡dhcp的server地址(检查是否有非法dhcp服务器)

[root@H522058 ~]# cat /var/log/messages |grep DHCPOFFER
Mar  6 21:23:05 localhost dhclient[5349]: DHCPOFFER from 10.254.103.1            #这里的DHCPOFFER 后面的ip就是dhcp server IP

linux如何查看ssl证书内容

    openssl x509 -text -noout -in 123.crt

file

如何查看服务器内存使用率?
    可以通过 free,top(执行后可通过 shitf+m 对内存排序),vmstat,procinfo 命令,也可以通过/proc/meminfo 文件查看。
如何查看单个进程占用的内存大小?
    可以使用 top -p PID,pmap -x PID,ps aux|grep PID 命令,也可以通过/proc/$process_id(进程的
    PID)/status 文件查看,例如/proc/7159/status 文件。
如何查找僵尸进程?
    可以使用 top 命令查看僵尸进程(zombie)的总数,使用 ps -ef | grep defunct | grep -v grep 查找具体僵尸进程的信息。
为什么删除 linux 服务器上的文件,硬盘空间不释放?
    有时,登录 linux 服务器执行 rm 命令删除文件后,用 df 命令查看硬盘空间,发现删除文件后
    可用的硬盘空间没有增加。原因是通过 rm 命令删除文件的时候,如果正好有其它进程在访问
    该文件,通过 df 命令查看,删除的文件占用的空间是没有立即释放的。
    解决方法: 使用 root 权限执行 lsof |grep deleted ,查看正在使用被删除文件的进程的 PID,
    通过命令 kill -9 PID 杀掉对应的进程即可

linux实现命令行自动补全

    yum install -y bash-completion

创建镜像文件,并格式化挂载使用

dd if=/dev/zero of=/var/ftp/pub.img bs=1M count=100000       #这里表示指定大小为 100000*1M = 100G
mkfs.xfs /var/ftp/pub.img                                    #创建文件系统,格式化为一个块设备,便于挂载使用
mount /var/ftp/pub.img /var/ftp/pub

centos8stream的xfsprogs版本高,默认支持稀疏模式,速度非常快(不带任何参数,默认就是的),这里暂时指定参数如何用,centos7.9的xfsprogs版本低,不支持sparse稀疏模式
    mkfs.xfs -m finobt=1 -i sparse=1 -f test.img

插入新的热插拔硬盘后,如何不重启系统就能挂载使用

方式一:
    创建触发器让内核发现新设备
    sudo udevadm trigger /dev/sdb

    仅显示磁盘硬件设备
    sudo lshw -c disk

方式二:
    添加scsi驱动器
    #为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示:
        w 是主机适配器标识,第一个适配器为零(0)
        x 是主机适配器上的 SCSI 通道,第一个通道为零(0)
        y 是设备的 SCSI 标识
        z 是 LUN 号,第一个 LUN 为零(0)
    echo "scsi add-single-device w x y z" > /proc/scsi/scsi
    echo "scsi add-single-device 0 0 2 0" > /proc/scsi/scsi

    #移除scsi驱动器(移除前确保已经umount了,cat /proc/partitions能看到是否识别到了盘)
    echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

    验证
    root@gateway-ddns-60:~# cat /proc/scsi/scsi
    Attached devices:
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
    Vendor: ATA      Model: KingFast         Rev: 9001
    Type:   Direct-Access                    ANSI  SCSI revision: 05
    Host: scsi1 Channel: 00 Id: 00 Lun: 00
    Vendor: ATA      Model: MT-512           Rev: 873 
    Type:   Direct-Access                    ANSI  SCSI revision: 05

linux通过进程查线程

[root@node100 ~]# ps -T -p 3351
  PID  SPID TTY          TIME CMD
 3351  3351 ?        00:01:38 libvirtd
 3351  3370 ?        00:00:12 libvirtd
 3351  3371 ?        00:00:11 libvirtd
 3351  3372 ?        00:00:11 libvirtd
 3351  3373 ?        00:00:11 libvirtd
 3351  3374 ?        00:00:12 libvirtd
 3351 35471 ?        00:00:11 libvirtd
 3351 37693 ?        00:00:00 libvirtd

linux检查IP是否存在冲突

  方法一:
        arping 192.168.1.2    #若要检查的IP地址,看返回mac是否唯一

  方法二:
        yum install arp-scan -y
        arp-scan -I eth0 -l   #(直接检查所在网段)
#清空网卡接口上所有的ip地址
    ip add flush dev eth0

#linux查看arp表项
  arp -n
  ip neigh show 

#绑定静态arp表项
    arp -i eth0 -s 192.168.2.1 00:CC:0C:BB:11:C2

#删除某个arp表项,清空arp表项
  ip neigh del 192.168.255.29 dev zt3rf5mdn4
  ip neigh flush  dev eth0

#使用指定ip进行arpping
    arping 192.168.1.1 -s 192.168.1.120

#主动更新邻居arp缓存
    arping -U -c 192.168.0.1

#检查进程是否存在(用0信号)
    killall -0 sshd &> /tmp/nginx.log
#linux进行快ping
  ping -i 0.0001 192.168.1.1
  ping -f 192.168.1.1
centos当yum程序出现报错“Another app is currently holding the yum lock; waiting for it to exit...”的解决方法
    rm -rf /var/run/yum.pid 
#linux磁盘坏道检查
  #-s 显示进度,-v显示详细过程,并将结果重定向到sdb.txt文件中方便查阅
  badblocks -s -v /dev/sdb > sdb.txt
思科等网络设备,ssh无法正常交换密钥,提示如下故障代码
    故障代码:ssh_rsa_verify: RSA modulus too small: 512 < minimum 768 bits  key_verify failed for server_host_key

    可以尝试的解决办法:
        A、ssh -v 2 -c des root@10.0.0.1
        B、ssh -oKexAlgorithms=+diffie-hellman-group1-sha1  root@10.0.0.1
#创建非常大的loop文件(ext4或xfs)
  #其实我的磁盘没有那么大(因为truncate的时候没有实际去写那么大的文件,当然这个也是要文件系统支持的)
  truncate -s 10T loop.img
  dd if=/dev/zero of=loop.img bs=1G seek=10000 count=0      #这种不需要额外装软件

查看某个pid程序所占用的 资源状态(3804是pid)
    top -Hp 3804

如何查看文件的inode,以及如何根据 inode number 查找文件
[root@dn42-bd ~]# ls -il
total 7116
924451 -rw-r--r--  1 root root      27 Jul 28 16:45 123.sh
924442 -rw-r--r--  1 root root       0 Jul 28 16:45 16:45:03
924444 -rw-r--r--  1 root root       0 Jul 28 16:45 2020.txt
924441 -rw-r--r--  1 root root       0 Jul 28 16:45 28

[root@dn42-bd ~]# find / -inum 924444
/root/2020.txt
ubuntu如何修改dns
    1、检查机器127.0.0.53的53端口是否监听(ss -tnl),要是没启动那么,你按照普通的修改就可以  /etc/resolv.conf
    2、要是监听了,就说明 systemd-resolved.service 这个服务启动了,所有的dns请求会被转发给他,如下是修改办法
        A、cat /etc/systemd/resolved.conf
[Resolve]
DNS=9.9.9.9             #主dns
FallbackDNS=8.8.8.8     #备dns
        B、systemctl restart systemd-resolved.service
查看分区类型及其代码的列表(比如 linux的是83 , Linux LVM是8e,VMFS 是 fb 等等)
    sfdisk -T

centos如何保存yum 安装过的软件包
#第一:修改yum的配置文件未保存缓存
    vi /etc/yum.conf
keepcache=1

#第二:yum 安装软件后,查看缓存目录
    yum install tree -y
    #软件包存放目录/var/cache/yum/x86_64
    cd /var/cache/yum/x86_64/7/epel/packages    

#centos7单网卡同时配置ipv4与ipv6并设置ipv6的网关
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=89.42.1.12
    NETMASK=255.255.255.0
    GATEWAY=89.42.1.1
    IPV6INIT=yes
    IPV6_AUTOCONF=no
    IPV6ADDR=2001:0ac8:0021:0008:0000:0000:0ccd:a1d9/64
    IPV6_MTU=1500
    IPV6_DEFAULTGW=2001:ac8:21:8::1

#linux查看磁盘分区类型
[root@VM_0_6_centos ~]# partprobe -s
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
/dev/vda: msdos partitions 1
/dev/vdb: msdos partitions 1
#centos系统修改网卡mac地址(在/etc/rc.local中将eth0的mac地址改成00:0c:29:85:31:01)
    ifconfig eth0 down
    ifconfig eth0 hw ether 00:0c:29:85:31:01
    ifconfig eth0 up 

查看用密码登陆成功的IP地址及次数

#dabian系列
    grep "Accepted password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

#redhat
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
#使用sed调换两行的顺序
    sed '/lineONE/{h;d;};/LineTWO/G'
    可使用$?来获取返回参数,0:open,1:close.

从文件列表打包tar gz包
    #文件列表里保存一份需要打包的列表,然后将其打包成tar gz包。可以使用如下命令
    cat file_list | xargs tar -czvf 'test.tar.gz'

获取进程ID
    ps -ef | grep nginx | awk '{print $2}'
获取进程ID后批量kill
    ps -ef | grep nginx | awk '{print $2}' | xargs kill -9

#查看用密码登陆失败的IP地址及次数
    dabian系列
    grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

#不校验文件系统进行只读挂载
    mount -o ro,norecovery /dev/dm-0 /data0

#同时移动多种类型的文件
    mv /tmp/*.{doc,pdf,txt} /root/123

#删除网卡上的某个IP地址
    ip addr del 192.168.1.104/24 dev enp0s3

#删除0字节文件
    find -type f -size 0 -exec rm -rf {} \;

#查看一个命令是否为shll的内置命令
    type -a command
    如:type -a scp

#查看http的并发请求数及其TCP连接状态:
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

#踢掉远程登录的用户(先用w命名,查看pts)
    pkill -kill -t pts/1

#博客程序升级,避免手动输入yes,进行文件覆盖
    yes | cp ./wordpress/* /web-boke/html/ -ifr

#查看系统的安装时间
    方式一:tune2fs -l /dev/sda1 | grep create
    方式二:rpm -q basesystem --qf '%{installtime:date}\n'

#以sudo运行上一条命令
    sudo !!

#查看系统在过去一段时间是否有过重启
[root@izwz98ohezcyvm2tjptvw6z ~]# last reboot
reboot   system boot  3.10.0-862.9.1.e Sun Aug  5 08:54 - 00:55  (-7:-58)   
reboot   system boot  3.10.0-862.9.1.e Sun Aug  5 08:48 - 00:54  (-7:-54)   
reboot   system boot  3.10.0-862.9.1.e Sun Aug  5 08:09 - 00:48  (-7:-21)   
reboot   system boot  3.10.0-862.9.1.e Sun Aug  5 07:49 - 00:09  (-7:-39)

#删除linux的日志及操作记录
    history -cw
    echo > /var/log/wtmp //清除用户登录记录
    echo > /var/log/btmp //清除尝试登录记录
    echo> /var/log/lastlog //清除最近登录信息
    echo > /var/log/secure //登录信息
    echo > .bash_history
    history -cw

#打印行号
    cat -n  #
    cat -b  #看内容有多少行,空白行不编号,不显示

#检查端口是否开放
    nc -vuz 1.1.1.1 53      #查看UDP的53端口是否开放(感觉不太准)
    nc -vtz wsfnk.com 443   #查看TCP的443端口是否开放
    nmap -sU 175.102.134.107  -p 1701 -Pn   #测试1701端口是否开放(感觉不太准)

#查看目录大小(注意这里查看的是占用磁盘的大小,是最小单元的倍数)(与ls -lh 看到的真实大小不一样)
    du -sh /tmp

#让linux的CPU满载
    for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
    或则
    cat /dev/urandom | md5sum

#查看文件的inode号,并使用innode进行删除(适用于无法用文件名进行删除时)
    wsfnk@ThinkPad-E540:~$ ls -i
    4470596 id_rsa00          4456462 模板            4456465 音乐
    wsfnk@ThinkPad-E540:~$ find -inum 4470596 -delete

#设置history 历史命令时间戳
    vim /etc/profile  #(添加如下一行信息)

    export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  "

    #登出后再次进入,查看就会有时间戳(如下,但是之前的命令时间会维持不变)
   63  2017-08-30 13:50:19  ls
   64  2017-08-30 13:50:19  su -

#以HTTP方式共享当前文件夹的文件
    python -m SimpleHTTPServer
    python3 -m http.server
    #python是默认打开的8000端口

#python以匿名ftp的方式共享当前文件夹(注意ftp端口是2121)
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip install pyftpdlib
    python -m pyftpdlib
    #python -m pyftpdlib -i 192.168.100.49 -w -d /tmp/ -u test -P 123456        #这是搭建认证的ftp

    wget -r ftp://1.1.1.1:2121/boot/dasdasd/*  #这里linux客户端使用wget匿名下载ftp数据的方式

#centos查询某条命令是在由哪个软件包提供的(先查询命令由什么包提供,再安装对应的包即可)
    方式一:
        yum  whatprovides  */lspci
    方式二:
        yum provides lspci
        dnf provides lspci

#普通用户使用vim编辑保持系统文件
    :w !sudo tee %
    #让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin传入

#快速备份一个文件
    cp filename{,.bak}

#替换上一条命令中的一个短语
    ^foo^bar^

#记录linux字符界面下的操作到文件中,便于同事查看
    #开始将shell里的操作以日志的方式记录到文件test.txt中,
    script test.txt
    #注意按Ctrl+D就可以停止日志的记录,其他人,如何查看
    cat test.txt

    高级用法
    script -t 2>demo.time -a demo.logshell  #屏幕录像
    scriptreplay demo.time demo.log     #录像回放

    记录某个用户的操作
        vi ~/.profile
    script -t -f -q 2>$USER.time -a $USER.log

#将你在命令行编辑的命令放在vim中编辑
    用法:命令或则编辑的内容,后面按ctrl+x,然后按ctrl+e
    ls <ctrl+x> <ctrl+e>

#重置终端
    在中端无反应是敲入reset

#用SSH创建端口转发通道
    ssh -N -L2001:remotehost:80 user@somemachine
    #这个命令在本机打开了2001端口,对本机2001端口的请求通过somemachine作为跳板,转到remotehost的80端口上

#更友好的显示当前挂载的文件系统
    mount | column -t

#用 Wget 的递归方式下载整个网站
    wget --random-wait -r -p -e robots=off -U Mozilla www.example.com
    参数解释:
        - -random-wait 等待 0.5 到 1.5 秒的时间来进行下一次请求
        -r 开启递归检索
        -e robots=off 忽略 robots.txt
        -U Mozilla 设置 User-Agent 头为 Mozilla
        其它一些有用的参数:
        - -limit-rate=20K 限制下载速度为 20K
        -o logfile.txt 记录下载日志
        -l 0 删除深度(默认为5)
        --wait=1h 每下载一个文件后等待1小时

#显示当前目录中所有子目录的大小
    du -h --max-depth=1

#显示消耗内存最多的 10 个运行中的进程,以内存使用量排序
    ps aux | sort -nk +4 | tail

#简易计时器
    time ls /
    #表示记录显示ls / 这条命令执行所需要的时间
        real指整个程序对真实世界而言运行所需时间,
        user指程序在用户空间运行的时间,
        sys指程序对系统调用锁占用时间

#远程关掉一台WINDOWS机器
    net rpc shutdown -I IP_ADDRESS -U username%password

#利用中间管道嵌套使用SSH
    ssh -t host_A ssh host_B
    #用于不可直达,网络环境复杂时

#列出你最常用的10条命令
    history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

#linux使用tcp追踪路径信息
    traceroute 43.230.145.95 -p 80 -T

#用TELNET看《星球大战》
    telnet towel.blinkenlights.nl

#将光盘文件制作成iso文件
    dd if=/dev/cdrom of=/home/wsfnk/centos7.iso

#查看cpu的缓存(比如有多个物理cpu,要看他的一级二级三级缓存是共享的还是独享的)
    lscpu -p

#查看系统性能
    mpstat 
    mpstat 1    #表示每一秒刷新一次

#查看各个网卡的收发包情况
    ip -s link

#查看网卡实时流量
    dstat
    或者
    sar -n DEV 1 5

#定时任务文件crontab -e的文件在哪儿(对应用户名)
    /var/spool/cron/root    里
*/20 * * * * /usr/sbin/ntpdate kvm-ntp-dns 2>&1

#远程命令执行(执行完成将结果返回,立马退出)
    ssh root@192.168.1.141 w

#怎么让linux的ssh终端不掉线
    方法一:在linux系统中使用ssh连接远程服务器时,可以使用-o的一个参数ServerAliveInterval来设置防止超时的时间。
        ssh -o serveraliveinterval=60 root@192.168.1.12
    方法二:修改服务器配置
        vim /etc/ssh/sshd_config
    #添加或者修改ClientAliveInterval为“ClientAliveInterval 60”
    #这个参数的是意思是每1分钟,服务器向客户端发一个消息,用于保持连接。保存后记得重启ssh服务。

#查看所有进程的文件打开数
    lsof |wc -l

#查看某个进程打开的文件数
    lsof -p pid |wc -l

#非交互式修改密码(两种方法)
    echo “ldap001:1234”|chpasswd
    echo "1234"|passwd --stdin ldap001

#linux设置复杂密码,使用md5生成密码
    echo "root:`echo '12346' |md5sum |cut  -c1-10`+2" |chpasswd

#linux如何批量杀进程
    第一:批量获取进程ID
    ps -ef|grep nginx|awk '{print $2}'
    第二:批量杀进程
    ps -ef|grep nginx|awk '{print $2}'|xargs kill -9
#ip别名,单网卡如何设置多个ip解决方法之一
    ip addr add 192.168.1.2/24 dev eth0 lable eth0:0
    #或则
    ifconfig eth0:0 192.168.1.2/24 gw 192.168.1.1
    #若采用文件的方式永久添加逻辑接口ip,其中配置文件加上如下这句(表示有依附关系的)
    ONPARENT=yes

#linux禁止ping,centos禁ping(0表示允许,1表示禁止)
    方法一:
    echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all     #即时生效
    方法二:
    vim /etc/sysctl.conf
        net.ipv4.icmp_echo_ignore_all = 1
    sysctl -p   #刷新生效

#linux开启IP转发(作为网关时必须开启)(修改/etc/sysconfig/network)
    FORWARD_IPV4=yes/no
    可以通过cat /proc/sys/net/ipv4/ip_forward 来确认,1表示开启,0表示未开启

#查看网卡是否支持SR-IOV功能(英特尔网卡支持),并查看网卡是否开启IOMMU功能
    lspci -vv | grep -A 10 "Single Root I/O Virtualization"
    dmesg | grep IOMMU | grep enabled

#linux查看系统有无内存错误(测试只在部分真实主机上有用)
    [root@localhost ~]# grep "[0-9]" /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count
    /sys/devices/system/edac/mc/mc0/csrow0/ch0_ce_count:8
    /sys/devices/system/edac/mc/mc0/csrow1/ch0_ce_count:4

linux添加路由表之centos7,采用iproute2工具集

#帮助使用格式
    ip help
    ip link help

#注意:什么时候用跟网关地址,什么时候需要跟出接口(via是网关,src用于单接口多IP地址的情况)
    ip route add default via 192.168.0.1 dev eno1
    ip route add 192.168.1.3 dev eno1
    ip route add 192.168.1.3/24 dev eno1
    ip route add 192.168.1.3/24 src 172.16.0.2 via 172.16.0.1  metric 100

#清空路由
    ip route flush 
#删除路由
    ip route del 192.168.1.3
    ip route del 192.168.1.3/24

#永久添加路由
    方法一:将命令写到/etc/rc.local,并且赋予/etc/rc.d/rc.local执行权限
    方法二:创建网卡路由文件
    [root@CQ ~]# cat /etc/sysconfig/network-scripts/route-enp0s3 
    172.0.0.0/8 dev enp0s3
    [root@CQ ~]# ip r
    172.0.0.0/8 dev enp0s3 proto static scope link metric 100 
    192.168.2.0/24 dev enp0s3 proto kernel scope link src 192.168.2.1 metric 100

linux添加路由表之centos6,采用net-tools工具集

    route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0   #添加一条静态路由
    route add default gw 192.168.0.1        #添加默认路由
    route add -net 224.0.0.0 netmask 240.0.0.0 reject       #屏蔽一条路由
    route del -net 192.168.1.0/24 gw 192.168.0.1    #删除一条路由
    route -n        #查看路由表

#永久添加路由
    方法一:将命令写到/etc/rc.local,并且赋予/etc/rc.local执行权限
    方法二:创建静态路由文件/etc/sysconfig/static-routes
    [root@CQ ~]# cat /etc/sysconfig/static-routes
    any net 192.56.76.0 netmask 255.255.255.0 dev eth0 
    any host 192.56.7.4 dev eth0 
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/284.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/8/10作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录