目录
一 man命令
代码 | 功能 |
---|---|
1 | 标准用户命令(Executable programs or shell commands) |
2 | 系统调用(System calls)functions provided by the kernel |
3 | 库调用(Library call)functions within program libraries |
4 | 特殊文件(设备文件)的访问入口(/dev)Special files (usually found in /dev) |
5 | 文件格式(配置文件的语法),指定程序的运行特性 File formats and conventions |
6 | 游戏(Games) |
7 | 杂项(Miscellaneous)including macro packages and conventions |
8 | 管理命令 System administration commands |
9 | 跟kernel有关的文件 Kernel routines |
二 文件
1、find命令
格式:find path -name filename
;
find ~ -name ap*
:在~目录下查找以ap开始的文件;
find / | xargs grep function
:查找系统根目录下面的所有文件的内容中包含有function字符串的文件列表。find 得到的结果是一串文件名集合,如果直接传递给grep的话,grep会把这些文件名看作一些无意义的字符串来处理;但是传递给xargs,他会把他当作一个有意义的文件来处理;
find . | xargs grep -r "static\ void\ get_file"
:查找含有空格的文件;
错误:
find命令报错:paths must precede expression,原因:多文件的查找的时候需要增加单引号,出现这个提示是因为星号被展开为当前目录下所有的文件,这样的匹配当然会出错。
-maxdepth: 指定遍历搜索的最大深度;-mindepth: 指定开始遍历搜索的最小深度。
2 文件个数和行数
源文件数目:
$ find . -name "*\.[hc]" | wc -l
51
源代码总行数:
$ find . -name "*\.[hc]" | xargs wc -l | tail -n1
25562 总计
每个文件中的行数:
find . "(" -name "*" ")" -print | xargs wc -l
调用以下命令即可把每个源代码文件行数及总数统计出来
(1)包括空行(会列出每个文件的代码行数):
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.c" -or -name "*.h" -or -name "*.xib" -or -name "*.pch" ")" -print | xargs wc -l
(2)不包括空行(只会出现总行数):
find . "(" -name "*.m" -or -name "*.mm" -or -name "*.c" -or -name "*.h" -or -name "*.xib" -or -name "*.pch" ")" -print | xargs grep -v "^$"|wc -l
//如果有其它.后缀文件可以继续添加如-or -name "*.java"
3 远程拷贝
scp命令是用于Linux与Linux主机之间的传输数据通信,而XCOPY命令用于Windows与Windows主机之间的数据传输。
linux 本地文件上传到服务器:
scp /home/liujia/file.1txt liujia@172.16.252.32:/user/liujia
从服务器下载文件
scp liujia@172.16.252.32:/user/liujia/file1.txt /home/liujia
错误not a regular file:原因是这样是相当于下载文件夹,而非文件。解决办法加参数-r
。
4 软连接
- 文件软链接
ln -s x x(连接名称)
- 目录软连接
ln -s /x/x /x/x
必须为绝对路径。
5 chown
chown root:root -R filename
三 进程
1、&符号
用途:可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:$ ./my-shell-script.sh &
2、nohup
使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉。要避免这种情况,你可以使用nohup命令,如下所示:$ nohup ./my-shell-script.sh &
,如果想要找到这个运行在后台的命令:ps -ef | grep filename
3、at
将一个命令作为批处理执行,使用at命令,你可以让一个命令在指定的日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令:$ at -f backup.sh 10 am tomorrow
在批处理模式下执行某些任务需要启用一些选项。
4、watch
连续地执行一个命令 要想按一个固定的间隔不停地执行一个命令,可以使用watch命令,如下所示:$ watch df -h
5、查看使用某端口的进程
lsof -i:<port>
(在ubuntu平台上如果前面不加sudo,毛都打印不出来)netstat -tunlp |grep <port>
6、time命令
https://blog.csdn.net/essity/article/details/84578624
四 硬件
1 GPU使用情况
NVIDIA显卡命令:nvidia-smi
第一栏的GPU:对应的是显卡的排列号数,可能有多个显卡;Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的)。
第二栏的Name:显卡的名称;Temp:是温度,单位摄氏度。
第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。
第四栏下方的Pwr:是能耗;Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
第五栏的Bus-Id:是涉及GPU总线的东西,domain🚌device.function。
第六栏的Disp.A:是Display Active,表示GPU的显示是否初始化;Memory-Usage:是显存使用情况。
显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。
2 df
整个磁盘剩余空间:df -h
当前文件夹所占用磁盘空间:du --max-depth=1 -h
(默认是当前的路径,-h是文件的大小安装 M 显示。结果中,前面n-1行的是该目录下每个文件夹的大小。最后一行显示的是该目录总的大小。)
3 du
单个文件大小:du -sh filename
4 fdisk
sudo fdisk -l
五 软件
1.查看安装的所有软件:dpkg -l
,例如:dpkg -l | grep ftp
;
2.查看软件安装的路径:dpkg -L | grep ftp
,也可以用:whereis ftp
;
3.查看软件版本:aptitude show
,例如:aptitude show ftp
。
六 Linux三剑客
1 grep
它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep -r "static\ void\ get_file" ../(搜索带空格的字符)
参数:-n
:显示行号;-v
:反向查找;-i
:无视大小写;-E
:使用扩展正则;--color
:将匹配得到的内容进行语法高亮;-w
:全匹配(非模糊匹配)。
2 sed
sed 参数 + 动作
参数:-n
:将经过处理的行打印出来;-e
:默认模式,执行后续命令;-f
:将动作写在文件中;-r
:使用扩展的RE表达式,默认是基础正则;-i
:直接修改文件读取的内容,不是打印在标准输出上。
动作:
[n1[,n2]]function
- a, i + 字符串
添加一行字符串a在上面一行,i在下面一行 - d 删除
- c 替换
- p 打印 与-n一起用
- s 替换,搭配正则表达式
s/旧字符串/新字符串/g
特殊
s/字符串//g
就把字符串删除了
例如:
将windows下文件转移到linux下,会有多余的\r字符,利用sed将其删掉
sed -i ‘s/\r//g’ filename - /字符串/
表示包含字符串的行号
3 awk
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
awk 是一种很棒的语言,它适合文本处理和报表生成,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。
使用方法:awk '{pattern + action}' {filenames}
参数:BEGIN
和END
在开始和结束时可以执行{}内的动作;NF
:当前行的字段数;NR
:当前的行号;FS
:目前的分隔符。
条件类型可以是逻辑操作,{}内可以是语句,基础:if语句。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
七 压缩解压
格式 | 压缩 | 解压 |
---|---|---|
.tar | tar cvf FileName.tar FileName | tar xvf FileName.tar |
.gz | gunzip FileName.gz gzip -d FileName.gz | gzip FileName |
.tar.gz | tar zcvf FileName.tar.gz DirName | tar zxvf FileName.tar.gz |
.bz2 | bzip2 -d FileName.bz2 bunzip2 FileName.bz2 | bzip2 -z FileName |
.tar.bz2 | tar jxvf FileName.tar.bz2 | tar jcvf FileName.tar.bz2 DirName |
.bz | bzip2 -d FileName.bz bunzip2 FileName.bz | |
.tar.bz | tar jxvf FileName.tar.bz | |
.Z | uncompress FileName.Z | compress FileName |
.tar.Z | tar Zxvf FileName.tar.Z | tar Zcvf FileName.tar.Z DirName |
.tgz | tar zxvf FileName.tgz | |
.tar.tgz | tar zxvf FileName.tar.tgz | tar zcvf FileName.tar.tgz FileName |
.zip | unzip FileName.zip | zip FileName.zip DirName |
.rar | rar a FileName.rar | rar e FileName.rar |
.xz | xz -d *.xz | |
tar参数: | ||
-c:建立一个压缩文件的参数指令(create 的意思); | ||
-x:解开一个压缩文件的参数指令; | ||
-t:查看 tarfile 里面的文件; | ||
特别注意,在参数的下达中, c/x/t 仅能存在一个,不可同时存在! 因为不可能同时压缩与解压缩。 | ||
-z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? | ||
-j:是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? | ||
-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! | ||
-f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! | ||
大文件压缩分割: |
tar -zcvf andywang.tar.gz andywang
#将andywang文件夹压缩成andywang.tar.gz
压缩后的文件太大,需要将andywang.tar.gz分割成N个指定大小的文件
split -b 4000M -d -a 1 andywang.tar.gz andywang.tar.gz.
#使用split命令,-b 4000M 表示设置每个分割包的大小,单位还是可以k
#-d "参数指定生成的分割包后缀为数字的形式
#-a x来设定序列的长度(默认值是2),这里设定序列的长度为1
#例如:andywang.tar.gz.0001(序列为四,即0001)
执行命令后,生成压缩包如下:
andywang.tar.gz.0 andywang.tar.gz.1
解压命令:
cat andywang.tar.gz.* | tar -zxv
也可以先把包合起来再解压:
cat andywang.tar.gz.* >andywang.tar.gz