文章目录
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
如何查看服务器内存使用率?
可以通过 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
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论