Skip to content

Latest commit

 

History

History
387 lines (278 loc) · 16.1 KB

Linux笔记.md

File metadata and controls

387 lines (278 loc) · 16.1 KB

服务器组的连接与使用

Moon+Zerotier说明 现在我们采用Moon服务器加速大家的体验,需要大家在本地命令行进行简单的操作,云端我已经配置好了。

首先检查一下你的zerotier服务目录(不是文件目录)是否在,不然不可以使用下面的脚本

Zerotier的本地工作文件夹通常来说在 Windows: C:\ProgramData\ZeroTier\One Mac: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One) Linux: /var/lib/zerotier-one

其他配置见手册

linux top命令VIRT,RES,SHR,DATA的含义

VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap out后,它将会降下来 DATA 1、数据占用的内存。如果top没有显示,按f键可以显示出来。 2、真正的该程序要求的数据空间,是真正在运行中要使用的。 top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下: s – 改变画面更新频率 l – 关闭或开启第一部分第一行 top 信息的表示 t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示 m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示 N – 以 PID 的大小的顺序排列表示进程列表 P – 以 CPU 占用率大小的顺序排列进程列表 M – 以内存占用率大小的顺序排列进程列表 h – 显示帮助 n – 设置在进程列表所显示进程的数量 q – 退出 top s – 改变画面更新周期 序号 列名 含义 a PID 进程id b PPID 父进程id c RUSER Real user name d UID 进程所有者的用户id e USER 进程所有者的用户名 f GROUP 进程所有者的组名 g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? h PR 优先级 i NI nice值。负值表示高优先级,正值表示低优先级 j P 最后使用的CPU,仅在多CPU环境下有意义 k %CPU 上次更新到现在的CPU时间占用百分比 l TIME 进程使用的CPU时间总计,单位秒 m TIME+ 进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA r CODE 可执行代码占用的物理内存大小,单位kb s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb t SHR 共享内存大小,单位kb u nFLT 页面错误次数 v nDRT 最后一次写入到现在,被修改过的页面数。 w S 进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) x COMMAND 命令名/命令行 y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 z Flags 任务标志,参考 sched.h 默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。 通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。 按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。 按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

Linux前台、后台、挂起、退出、查看命令汇总

command &  直接在后台运行程序 ctrl+c 退出前台的命令,不再执行 ctrl+z挂起前台命令暂停执行,回到shell命令行环境中 bg    将刚挂起的命令放到后台运行 bg %3  将第三个job放到后台运行 kill %3  杀死第三个job,不再执行 fg    将刚挂起的命令返回前台运行 fg %3  将第三个job返回前台运行 jobs   察看当前shell下运行的所有程序;带+表示最新的jobs;带-表示次新的jobs;其他jobs不带符号 nohup=no hang up,不挂断,如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程.长命令必须写在shell文件中,否则nohup不起作用

nohup与其输出重定向 nohup command &                                  //该命令的一般形式 nohup command > myout.file 2>&1 &      //log输出到myout.file,并将标准错误输出重定向到标准输出,再被重定向到myout.file

fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本 二、ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态。 三、jobs 查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。 四、fg 将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。   五、bg 将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。 六、disown -h disown -h % pid 把进程pid挂上忽略hup信号,该进程不会因为断开而断掉,相当于中途转nohup

七、kill 前台进程的终止:Ctrl+c

后台kill ps aux | grep lung_imaging.py | awk '{print $2}' | xargs kill -9

ps -ef|grep lung|grep -v grep|cut -c 9-15|xargs kill -15

关闭/开启图形界面 init 3 如果在关闭了图形界面后想临时打开可以使用指令"init 5"或者"startx"进行操作,这两个指令的区别在于"init 5"指令会重启系统但是"startx"不会,所以建议使用"startx"。

缓存清理 缓存是什么:为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。

程序用完了如果缓存不自动清理的话,可以用这个人工清理掉: echo 1 > /proc/sys/vm/drop_caches

proc文件节点,是用户与内核进行通信和数据交换的一个通道,sys/vm/drop_caches字面也好理解,系统的虚拟内存模块保留的一个drop caches的接口,想这个接口发指令就能drop caches,linux这个命名也是6啊,看名知意。

echo的参数: 0 – 不释放 1 – 释放页缓存 2 – 释放dentries和inodes 3 – 释放所有缓存 3还是慎用吧,另外释放内存之前最好sync一下,linux本身将内存中的缓存写回磁盘的时间是30s(印象是这个,如果自己没有调过内核参数的话),sync就是告诉系统,把缓存的东西该写磁盘的写磁盘,老子不等你那个30s了,老子要的现在就要。嗯,就是这样。

Linux显存占用无进程清理方法 在跑Caffe、TensorFlow、pytorch之类的需要CUDA的程序时,强行Kill掉进程后发现显存仍然占用

这时候可以使用如下命令查看到top或者ps中看不到的进程 fuser -v /dev/nvidia*

接着杀掉显示出的进程(有多个,如pid=12345,一个个删除): kill -9 12345 kill -9 12345m

批量清理显卡中残留进程: sudo fuser -v /dev/nvidia* |awk '{for(i=1;i<=NF;i++)print "kill -9 " $i;}' | sudo sh

清理指定GPU显卡中残留进程,如GPU 2: sudo fuser -v /dev/nvidia2 |awk '{for(i=1;i<=NF;i++)print "kill -9 " $i;}' | sudo sh

linux下删除文件夹及下面所有文件

使用rm -rf 目录名字 命令即可 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思   rm 不带参数 只能删除文件

linux更新文件权限 chmod -x 去除执行能力

创建/移动/重命名/复制文件夹

创建aaaaaaaaa文件夹 mkdir aaaaaaaaa

移动p05-fu文件夹到aaaaaaaaa文件夹下 mv /root/user/p05-fu /root/user/aaaaaaaaa/p05-fu

mv命令既可以重命名,又可以移动文件或文件夹。 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c

复制 cp 命令使用 -r 参数可以将 packageA 下的所有文件拷贝到 packageB 中: cp -r /home/packageA/* /home/cp/packageB/ 将一个文件夹复制到另一个文件夹下,以下实例 packageA 文件会拷贝到 packageB 中: cp -r /home/packageA /home/packageB 运行命令之后 packageB 文件夹下就有 packageA 文件夹了。

查看目录内容

du file_path 目录的容量(du)语法格式

[plain] du [-ahskm] 文件或者目录名

参数解释-a : 列出所有的文件与目录容量,因为默认仅统计目录的容量而已 -h: 以人们较易读的容量格式呈现(G/M/K)显示,自动选择显示的单位大小 -s : 列出总量而已,而不列出每个个别的目录占用容量 -k : 以KB为单位进行显示 -m : 以MB为单位进行显示常用命令参考 查看当前目录大小[plain] du -sh ./ 查看某一指定目录大小[plain] du -sh directory_name

在指定目录下显示10个占用空间最大(最小)的目录或文件 最大:[plain] du -sh * | sort -nr | head 最小:[php] du -sh * | sort -n | head

统计个数

统计当前目录下文件的个数(不包括目录) ls -l | grep "^-" | wc -l 统计当前目录下文件的个数(包括子目录) ls -lR| grep "^-" | wc -l 查看某目录下文件夹(目录)的个数(包括子目录) ls -lR | grep "^d" | wc -l

检查更新时间 stat filename/file_path Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间  Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。  Change Time:简写为ctime,表示文件的状态时间,当文件的状态权限被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

查看登陆记录

 last -f /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大

目前根据https://blog.csdn.net/jctian000/article/details/81773255 做了自动log的功能

Vim相关信息 参考资料https://www.runoob.com/linux/linux-vim.html

vim xxx.xx 对xxx.xx使用vim文本编辑

1.vi/vim 的基本使用方法 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式: 用户刚刚启动 vi/vim,便进入了命令模式。 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。 以下是常用的几个命令:

  •   i 切换到输入模式,以输入字符。
    
  •   x 删除当前光标所在处的字符。
    
  •   : 切换到底线命令模式,以在最底一行输入命令。
    

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。 命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式 在命令模式下按下i就进入了输入模式。 在输入模式中,可以使用以下按键:

  •   字符按键以及Shift组合,输入字符
    
  •   ENTER,回车键,换行
    
  •   BACK SPACE,退格键,删除光标前一个字符
    
  •   DEL,删除键,删除光标后一个字符
    
  •   方向键,在文本中移动光标
    
  •   HOME/END,移动光标到行首/行尾
    
  •   Page Up/Page Down,上/下翻页
    
  •   Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    
  •   ESC,退出输入模式,切换到命令模式
    

底线命令模式 在命令模式下按下:(英文冒号)就进入了底线命令模式。 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。 在底线命令模式中,基本的命令有(已经省略了冒号):

  •   q 退出程序
    
  •   w 保存文件
    
  •             wq 储存后离开
    

按ESC键可随时退出底线命令模式。

2.乱码的问题 解决方法是在 ~/.vimrc 中添加如下的配置: set encoding=utf8

3.常用组合键 [Ctrl] + [f] 屏幕『向下』移动一页 [Ctrl] + [b] 屏幕『向上』移动一页

压缩zip 将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip: zip -q -r html.zip /home/html 如果在我们在 /home/html 目录下,可以执行以下命令: zip -q -r html.zip * 从压缩文件 cp.zip 中删除文件 a.c zip -dv cp.zip a.c

解压zip 解压当前目录的某个zip到当前目录,生成新路径/文件 unzip zipped_file.zip 解压当前目录的某个zip到新路径 unzip zipped_file.zip -d unzipped_directory

文件传输 服务器VPN下的ssh上传/下载文件

1、从本地传送文件到服务器

将 /home 目录中的 a.jsp 文件从本地传送到服务器 /home 目录下 scp /home/a.jsp [email protected]:/home

2、从服务器下载文件到本地

将服务器的 /home 目录中的a.jsp文件下载到本地的/home目录 scp [email protected]:/home/a.jsp /home

3、从本地传送目录到服务器

将本地的 /home 中的 local_dir 目录传送到服务器的 /home 目录 scp -r /home/local_dir [email protected]:/home

4、从服务器下载目录到本地

将服务器的 /home 目录中的 dir 目录下载到本地的 /home 目录 scp -r [email protected]:/home/dir /home

查看登录ip记录

Linux查看/var/log/wtmp文件查看IP登陆 last -f /var/log/wtmp

可能遇到的bug

pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory https://blog.csdn.net/zhuoyuezai/article/details/88121835

Pycharm:Can't get remote credentials for deployment server的解决办法 https://blog.csdn.net/qian2213762498/article/details/85634502 以及看一下是否有正确设置解释器,它可能没有识别成ssh解释器

Pycharm退出pytest模式(run pytest in模式) https://blog.csdn.net/u011318077/article/details/88090830

RuntimeError: received 0 items of ancdata https://www.jianshu.com/p/b67ab03cd7a1 https://blog.csdn.net/weixin_30419799/article/details/99989582

Linux部署zerotier局域网工具 https://blog.csdn.net/weixin_43944305/article/details/103107786

linux下开启SSH,并且允许root用户远程登录,允许无密码登录 https://www.cnblogs.com/exmyth/p/10403079.html

linux下的文件都变成了绿色 https://zhidao.baidu.com/question/752028904199993644.html?qbl=relate_question_1&word=linux%CE%C4%BC%FE%B1%E4%C2%CC%C9%AB

Linux 系统启动后出现(initramfs) 处理办法 https://blog.csdn.net/qq_29855509/article/details/105609721

Ubuntu命令卸载软件 https://blog.csdn.net/luckydog612/article/details/80877179

安装htop https://www.cnblogs.com/humor-bin/p/12785597.html

Linux配置系统path,将anacoda的path设置到系统路径 https://www.cnblogs.com/youyoui/p/10680329.html

SWAP知识 https://blog.csdn.net/hzj_001/article/details/89387194 https://blog.csdn.net/wenwst/article/details/85065383