28,lsblk #英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。
hostname@io:/$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.7T 0 disk
├─sda1 8:1 0 488.3G 0 part /opt
├─sda2 8:2 0 127G 0 part [SWAP]
├─sda3 8:3 0 78.1G 0 part /
└─sda4 8:4 0 3T 0 part /home
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 1K 0 part
└─sdb5 8:21 0 1.8T 0 part /share
27,realpath
>realpath "filename" #输出某个文件的绝对路径
26,ls命令
有时候打开一个包含大量文件的文件夹,ls时间过长,因为ls是先读取文件列表到内存(占用越来越大),然后排序然后打印,花费时间当然长,此时可以用ls | less进行查看
但是用ls | less只是节约了在屏幕上打印的时间,还是没有解决根本问题。
所以,使用ls -1 -f命令,可以不执行排序,读取目录然后立即显示文件名(读一个显示一个)。
或者加上less分页查看,ls -1 -f | less
ls只列出当前目录中的文件夹:
ls -l |grep ^d或者是 ls -d */
25,rsync命令
rsync -atzP ./test/ ./test2/ #同步test到test2
选项说明:
-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。 -P:显示文件传输的进度信息。这个比-v好用 -a --archive :归档模式,表示递归传输并保持文件属性。这个比-r好用 -r --recursive:递归到目录中去。 -t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。 -z :传输时进行压缩提高效率。
2024.2.14 update:使用rsync从远程拷贝文件,远程端口号为20219. rsync -r -P -e "ssh -p 20219" uername@IP:/home/XXX/intein_MDs . rsync -r -P -e "ssh -p 20219" ./11_* wanglab@ip:/home/wanglab/intein_MDs_10ns #cp 当前文件./11_*到远程 rsync -r -P -e "ssh -p 20219" wanglab@ip:/home/wanglab/intein_MDs_10ns/06_{01..24}* . #同步远程文件到本地
24,标准输入输出
比如下面这个命令:
sh test.sh &>/dev/null 2>&1
其中/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
那么>/dev/null 2>&1的意思就是:
标准输出重定向到空设备文件,也就是不输出任何信息到终端,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
23,查看显卡型号
方法1: lspci | grep -i vga
后来想看一下linux怎么查看显卡型号,搜到命令lspci | grep -i vga,但返回的是一个十六进制数字代码(1080),如下图:
进入这个网站 http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci
可以按照十六进制数字代码找到相应的显卡型号。
方法2:nvidia-smi
参考链接:https://blog.csdn.net/maizousidemao/article/details/88821949
22,修改所在目录中所有文件权限(不包括文件夹)chmod 644 `ls -F | grep -v "/"`
21、tar打包&解包,压缩&解压,分卷压缩&解压
打包:tar -cvf new.tar file
解包:tar -xvf new.tar
打包并压缩:tar -czvf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
解压缩:tar -xzvf file.tar.gz //解压tar.gz
有时候会出现大文件无法传递的情况,需要分卷压缩:
分卷压缩:tar czvf - ./3jcu_inter_1ns.nc | split -d -b 3800m - 3jcu.tar.gz
解压缩:cat 3jcu.tar.gz* | tar xzv
将轨迹文件压缩为一个个的3800m大小的文件,然后传输,传输之后解压缩即可
20、cut命令
cat test2.txt
No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98
cut -f2 -d";" test2.txt
结果:
Name
tom
jack
alex
例子:查看有多少账户:cat /etc/passwd |cut -f 1 -d :
19、linux三剑客 awk,sed,grep。三剑客的功能非常强大,但我们只需要掌握他们分别擅长的领域即可:grep擅长查找功能,sed擅长取行和替换。awk擅长取列。
19.1 取出一列数的最大值最小值平均值
awk '{sum=sum+$2}END{printf sum/NR "\n"}' date
显示平均值
cat date|awk '{printf $2"\n"}'|sort|sed -n '1p'
显示最大值,排序一下,取第一行值
cat date|awk '{printf $2"\n"}'|sort|sed -n '$p'
显示最小值,先排序一下,取最尾值
18、free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
链接:free查看内存,df查看磁盘分区及其大小,du查看文件大小
17、账户管理,并为新用户设置root权限,查看所有用户
(1)添加新账户:#都需要root权限
useradd -s /bin/bash -d /home/jacs -m jacs
passwd jacs
# -s指定用户的登陆shell -d指定用户主目录并后面跟-m创建主目录
#如果需要将用户添加到user组,需要使用-g,如:useradd -s /bin/bash -d /home3/zhangh -m zhangh -g user。 其中-g表明为添加主要用户组,-G表示要添加到附加用户组(默认主要用户组为自己的账户名为一个组)
将已有用户添加到g09组:usermod -a -G g09 guojp
(2)删除账户
Userdel -r jacs
删除文件夹/var/spool/mail/ 中 对应用户的信箱文件
(3)为新的普通用户添加root权限——添加到具有root权限的admin组
groupadd admin
usermod -a -G admin jacs
#admin组的权限在/etc/sudoers中可以看到
(4)查看用户:/etc/passwd 查看用户组:/etc/group
Groups命令查看当前登陆用户的组内成员
Groups jacs 查看jacs用户所在的组
16、paste将两个文件内容合并成列或者行
用法: paste -d -s -file1 file2
15、cat /etc/issue #查看发行版信息
14、linux查看系统运行时间的方法:
Uptime、w、who、last
13、du –sh 可以查看当前目录所有文件夹以及大小的总和
du –sh * 可以查看当前目录所有文件夹的大小
12、df –hT
查看挂载点以及挂载系统是什么,以及可用容量。其中-h是human readable的意思;-T是查看挂载类型,没有也可以
2019/5/27日补充:
一般查看磁盘大小用df -h
df -lh #只查看本地文件系统(不查看远程挂载的)
df -lh –total 查看每一列的总和
11、sed
Sed默认不改变文件内容,把当前处理的行存储在缓冲区中,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行。 PS:-i直接处理文本
删除空白行 sed '/^$/d' test.txt
sed改变某个文件中多行内容:
sed -i -e "s/HIE/HIS/g" -e "s/GU1/GLU/g" -e "s/HD1/HIS/g" -e "s/HD2/HIS/g" -e "s/HD3/HIS/g" -e "s/HD4/HIS/g" U2H_$i.pdb
10、gzip压缩文件夹内所有文件:gzip -vc * > md.gz
解压:gzip –d md.gz
9、linux打开图片: eog命令
8、top
#按数字“1”,多核监控
#高亮显示正在运行的进程。“b”打开或者关闭加亮效果,“y”显示加亮或者不显示加亮
#top的默认排序列是%cpu(占用cpu最多的排在最上面),可以用shift+“>”或者“<”来向左或者向右改变排序列
#top –c #显示完整命令
#top –n 5 #设置更新次数(达到指定次数后自动q)
#top –d 3 #设置更新时间(3秒)
#top –p 42619 #只显示某一个PID的进程信息
#top之后的交互 #l:打开关闭时间信息 m打开关闭内存信息 t打开关闭cpu信息 c显示命令名称还是完整命令
7、ps(process status) #ps c #可以查看程序运行状态 如:ssh n19 ps c
6、ls | wc #统计当前目录下有多少个文件和目录
5、ln 软连接和硬链接
4、df显示磁盘使用情况,第一列代表文件系统对应的设备文件的路径名(一般是硬盘上的分区),最后一列是挂载点
3、打包与压缩
2、diff比较两个文件的不同
diff [-y] file1 file2 #并排展示不同,|表示有不同,”<”表示少一行
1、which 查看的是可执行文件的位置,whereis(没什么用),locate(查看根目录下文件位置,不怎么用);find(搜索硬盘查询文件名称)
find . -name “[a-z]*[4-9].log” #从当前目录查找a到z开头4-9结尾加上.log的文件
find . –perm 755 #按照权限来查找
find . –mtime -5 #查找修改时间在5天之内的文件 ps:+5 代表5天之前的文件
find . –type d #查找所有目录
find . ! –type d #查找所有不是目录的文件
find . –size +10M #大于10M的文件
0、scp在两个linux 主机间复制文件
基本命令格式: scp [可选参数] file_source file_target
从本地复制文件到远程:
scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music
从本地复制目录到远程:
scp -r local_folder remote_username@remote_ip:remote_folder
从远程到本地,只需要后两项互换即可.
复制远程的两个文件夹到本地:
scp -r name@ip:/home/name/um_sampling_0.4_0.3_ok/\{output_xy_0.5ns,output_xy_1ns\} .
复制本地以test开头的文件到远程,远程的端口号为20219:
scp -P 20219 -r test* name@ip:/home/wanglab/intein_MDs_model2
Ps 查看正在后台运行的工作
ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
Ctrl + Z
直接杀掉前台运行的程序
jobs
查看当前有多少在后台运行的命令
fg
将后台中的命令调至前台继续运行
如果后台有多个命令,可以用fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
bg
将一个在后台暂停的命令,变成继续执行
如果后台有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
nohup 不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。
nohup command > myout.file 2>&1
持续更新……
更基础的内容可以菜鸟教程