实用命令和技巧
1、找出当前系统CPU、内存使用量较高的进程
ps -aux | sort -rnk 3 | head -20 (3 换 4,为内存)
2、killall -0 和 kill -0的区别
kill [信号代码] 进程ID
注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止。
# kill -9 22761
与kill命令不同的是,killall 命令可以根据进程名称来杀死进程。kill 命令 则先需要找到进程的id。
#yum install -y psmisc(安装killall) # pgrep -l magic_Linux 2 13020 magic_Linux01 3 22761 magic_Linux02 4 25279 magic_Linux03 5 27694 magic_Linux04 # killall magic_Linux02
3、xshell技巧
a、alt+shift+n 新建窗口
b、设置鼠标左键选中,邮件粘贴
c、新建窗口“+”消失快捷键恢复:
Ctrl+Shif+T
4、sort常用选项
-t,指定排序时所用的分隔符;-k,指定比较的列数,常与-t参数结合使用
sort -nt ":" -k 2 file1 apple:10:2.5 orange:20:3.4 banana:30:5.5 pear:90:2.3
-r 以倒序(相反的顺序)输出排序结果
-u --unique,去掉重复的行输出排序结果,功能类似于uniq功能
-f 将小写字母当作大写字母对内容进行排序
-n --numeric-sort 根据字符串数值比较
sort file1 file2 排序两个文件的内容 sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) sort file1 file2 | uniq -u 删除交集,留下其他的行 sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件
-h --human-numeric-sort 使用易读性数字(例如: 2K 1G)
du -d1 -h soft-packages/* | sort -h 18M soft-packages/node_exporter.tar.gz 124M soft-packages/go1.16.8.linux-amd64.tar.gz 175M soft-packages/NVIDIA-Linux-x86_64-455.45.01.run 314M soft-packages/NVIDIA-Linux-x86_64-510.60.02.run 344M soft-packages/NVIDIA-Linux-x86_64-515.48.07.run 551M soft-packages/dcgm-exporter.tar 585M soft-packages/harbor-offline-installer-v2.4.1.tgz
sort -V 按照版本号进行排序
是Unix或Linux系统中的一个命令行选项,用于按照版本号进行排序。这个选项将每个输入行当做一个版本字符串,并按照这个版本字符串进行排序。
-V
选项会将数字、字母和其他字符识别为独立的字段,并按照这些字段的顺序进行比较。这使得它特别适合于对那些包含数字、特殊字符和字母的字符串进行排序,比如软件版本号。
5、显示运行 3 级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据
6、杀掉80端口相关的进程
lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh
7、显示目录层级关系
find . * tree ls -Rl
8、windows和mac互传文件(前提是两者网段相同互通)
mac
python3 -m http.server
window(用pyhton也可以)
装一个fileserver
fileserver.exe -port 端口 -path 路径
9、sudo -i 和 su - root
su是superuser的前面两字母。 su root=su su root和su一样:表示与root建立一个链接,通过root执行命令,其实就是进程的有效用户ID变成了root,unix校验进程的权限都是校验的有效用户ID,进程的实际用户ID还是当前登录系统的用户,主目录也还是当前登录系统的用户的主目录。 su - root需要密码
sudo -i 不需要密码 sudo -i表示以root身份登录,进程的实际用户ID和有效用户ID都变成了root,主目录也切换为root的主目录。
10、非交互式修改密码
echo "password" | passwd testuser --stdin > /dev/null 2>&1 echo testuser:password|chpasswd
chpasswd
批量更新用户口令的工具
先创建用户密码对应文件,格式为username:password
,如abc:abc123
,必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令
chpasswd < user.txt
11、linux终端中启动 Visual Studio Code
# code .
12、ncdu
一个可以替代du命令的工具,ncdu命令是对传统du命令功能上的增强,不需要像du那样输入大量的命令,就可以计算文件及目录大小并可以按照大小或文件名进行排序。它是基于ncurses库开发的,因此还支持很多丰富的交互式命令。
Ncdu还提供了许多操作文件和文件夹的选项-导航,排序甚至删除: 上键或k : 用于向上移动光标 下键或j : 用于向下移动光标 右键或l : 打开所选目录 < 或者 h : 这将打开父目录 n - 按名称排序(再次按降序排列) s - 按文件大小排序(再次按降序排列) d - 删除所选文件或目录 g - 显示百分比和/或图表 t - 排序时在文件之前切换dirs c - 切换子项目计数的显示 b - 当前目录中的Spawn shell i - 显示有关所选项目的信息 r - 刷新/重新计算当前目录 q - 退出ncdu
13、格式化输出:column
cat dd.txt | column -t
column -s 选项指定分隔符来分割(同时去掉分隔符)
# cat testcolumn Jackie | 18 | male Helen | 20 | female Daniel Liu | 23 | male # cat testcolumn | column -s '|' -t Jackie 18 male Helen 20 female Daniel Liu 23 male
pr命令:可以将大文件分割成多个页面进行打印,并在每个页面上加上标题
-# 输出指定的列数。
-t 忽略页眉和页脚
-T 忽略页眉和页脚,去除所有分页记号
# find /usr/bin/ -executable -type f | pr -T -4 | column -t /usr/bin/cp /usr/bin/nl /usr/bin/chcon /usr/bin/which /usr/bin/gzip /usr/bin/tzselect /usr/bin/sleep /usr/bin/diff3 /usr/bin/alias /usr/bin/nohup /usr/bin/chgrp /usr/bin/hostname
14、查看各文件夹大小 ls -lSh
du -h --max-depth=1|sort -nr ls -lSh (-r 逆序排) 总用量 279M -rwxr-xr-x 1 op_admin op_admin 181M 2月 8 12:35 jdk-8u151-linux-x64.tar.gz -rw-r--r-- 1 op_admin op_admin 76M 2月 8 12:22 nacos-server-2.0.0-BETA.tar.gz -rwxr-xr-x 1 op_admin op_admin 13M 1月 18 10:39 ~ -rw-rw-r-- 1 op_admin op_admin 9.9M 3月 30 2016 cfssl_linux-amd64 drwxr-xr-x 13 op_admin op_admin 282 2月 4 19:00 seaweedfs drwxr-xr-x. 11 op_admin op_admin 203 1月 15 16:51 workspace -rw-rw-r-- 1 op_admin op_admin 149 12月 4 14:22 ts.sh
按时间递归逆序查看某个目录的文件,汉数混合有奇效(比如第1组)
ls -Rrt
递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径
find $PWD | xargs ls -ld
15、自动回答任何命令yes or no
yes | apt-get update。
16、wget 发送post请求
wget --post-data "item1=value1&item2=value2" url
示例:
wget --post-data "username=sg&password=123&content=%e6%b1%89%e5%ad%97&encode=utf8" http://m.sjn.com.cn/api/send/index.php
17、sz下载文件乱码
sz -be -y filename
-a, –ascii
-b, –binary 用binary的方式上传下载,不解释字符为 ascii
-e, –escape 强制escape 所有控制字符,比如 Ctrl+x,DEL 等
-ary –o-sync
-a 表示使用ascii码格式传输文件,如果是Dos格式的文件,会转换为unix格式
-r 使用 Crash recovery mode. 即文件传输中断会重传
-y 表示文件已存在的时候会覆盖
–o-sync 采用同步写模式,以处理从缓存写到磁盘时中断丢失的情况
18、glances(htop的升级版)
安装
centos: $ yum install -y glances debian: $ sudo apt-add-repository ppa:arnaud-hartmann/glances-stable $ sudo apt-get update $ sudo apt-get install glances
快捷键
h : 显示帮助信息 q : 离开程序退出 c :按照 CPU 实时负载对系统进程进行排序 m :按照内存使用状况对系统进程排序 i:按照 I/O 使用状况对系统进程排序 p: 按照进程名称排序 d : 显示磁盘读写状况 w : 删除日志文件 l :显示日志 s: 显示传感器信息 f : 显示系统信息 1 :轮流显示每个 CPU 内核的使用情况(次选项仅仅使用在多核 CPU 系统
选项
-b:显示网络连接速度 Byte/ 秒 -B @IP|host :绑定服务器端 IP 地址或者主机名称 -c @IP|host:连接 glances 服务器端 -d:关闭磁盘 I/O 模块 -e:显示传感器温度 -f file:设置输出文件(格式是 HTML 或者 CSV) -m:关闭挂载的磁盘模块 -n:关闭网络模块 -p PORT:设置运行端口默认是 61209 -P password:设置客户端 / 服务器密码 -s:设置 glances 运行模式为服务器 -t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767 -h : 显示帮助信息
19、隐私错误
解决:鼠标移动到当前页面任一空白处,键盘敲击thisisunsafe即可
20、查找顶级目录
# find ./ -type d ./ ./a ./a/a1 ./a/a2 ./b ./c ./c/c1 ./c/c1/c2 ./c/c1/c2/c3 # find ./ -type d | awk -F'/' '{print NF-1" "$0}' | sort | tail -1 | awk -F "/" '{print $NF}' c3
释意:NF-1:以/为分割符,从第一个/号左边开始数,比实际的层数多1,所以需要减1
21、内存插法(双活)
遇到不熟悉的服务器固件升级、内存插法去对应的官网下载指导手册和包
华硕服务器主板:
内存条插法推荐方式:(16 MImms表示16根内存条)
22、ntsysv命令查看服务自启动
23、生成大文件
dd if
dd if=/dev/zero of=rumenz.img bs=2G count=1
使用 truncate 命令缩小文件
truncate -s 1G rumenz.img
fallocate 创建大文件的速度是最快的
➜ shell_work fallocate --help 用法: fallocate [选项] <文件名> 为文件预分配空间或从文件回收空间。 选项: -c, --collapse-range 移除文件中的某个范围 -d, --dig-holes 检测零并替换为空洞 -i, --insert-range insert a hole at range, shifting existing data -l, --length <数字> 范围操作的长度(字节数) -n, --keep-size 保持文件的显示大小 -o, --offset <数字> 范围操作的偏移量(字节数) -p, --punch-hole 将某个范围替换为空洞(连带打开 -n) -z, --zero-range 清零并保证分配某个范围 -x, --posix use posix_fallocate(3) instead of fallocate(2) -v, --verbose 详尽模式 -h, --help display this help -V, --version display version
创建一个3g大文件
fallocate -l 3G ru.img
24、cat 查看文件内容不换行
cat __init__.py import pymysql pymysql.install_as_MySQLdb()root@arm:~/dockerfile/zjz_BBS/app01#
执行
unalias cat
25、tldr 工具
tldr(Too Long; Didn’t Read)是一个社区开源的命令行实用工具,旨在为各种命令提供简明的使用说明
安装
sudo apt update sudo apt install nodejs npm sudo npm install -g tldr
使用
[root@node1 ~]# tldr find find 在指定目录树下递归查找文件或目录。 更多信息:https://manned.org/find. - 通过扩展名查找文件: find 指定目录 -name '*.ext' - 查找匹配多个路径或名称模式的文件: find 指定目录 -path '**/path/**/*.ext' -or -name '*pattern*' - 查找匹配指定名称的目录,不区分大小写: find 指定目录 -type d -iname '*lib*' - 查找匹配指定模式的文件,排除特定路径: find 指定目录 -name '*.py' -not -path '*/site-packages/*' - 查找符合指定大小范围的文件,将递归深度限制为 "1": find 指定目录 -maxdepth 1 -size +500k -size -10M - 对每个文件运行命令(在命令中使用 {} 代表当前文件): find 指定目录 -name '*.ext' -exec wc -l {} \; - 查找最近 7 天修改的文件: find 指定目录 -daystart -mtime -7 - 查找空(0 字节)的文件并删除: find 指定目录 -type f -empty -delete