主要介绍了本人在Linux服务器中跑代码中使用的一些命令,碰到的问题的解决方案。
指定GPU:
-
main.py文件里指定GPU
import os os.environ["CUDA_VISIBLE_DEVICES"] = "1"
-
shell终端指定GPU
CUDA_VISIBLE_DEVICES=1 python main.py
实测方法2有时候无效,建议用方法1
快捷键
bg
将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。在后台执行一样会将结果输出到终端上,关掉终端进程即终止。fg
将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。&
加在一个命令的最后,可以把这个命令放到后台执行,如python main.py &
jobs
查看当前有多少在后台运行的命令Ctrl+z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态Ctrl+c
在命令行下起着终止当前执行程序的作用Ctrl+d
相当于exit命令,退出当前shellCtrl+s
挂起当前shell(保护作用很明显哦)Ctrl+q
解冻挂起的shell再不行就重新连接打开一个终端,reboot linux 或 kill 相关进程Shift+Insert
复制Ctrl+Insert
粘贴- 键盘的上下方向键可以查看shell终端自己输入的历史命令
终端中编辑修改.py文件
命令行输入需要编辑的文件:vim *.py
如:``vim main.py`
Insert
进入编辑模式
Esc
退出编辑模式,然后输入:wqa
保存文件,或者 :q!
不保存文件。
注:vim进行缩进的时候,直接按 tab
会报错,建议直接换成输入4个空格(一个tab字符相当于4个空格)
程序执行不受终端关闭或断网影响
方法一:
nohup:始终后台运行
如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了。
如:
# 后台运行(不受终端关闭干扰),将终端的输出重定向nohup.out文件(文件名字任取), 我一般使用log.txt
nohup python main.py > nohup.out 2>&1 &
nohup表示挂起,最后一个 & 表示放入后台
2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 run.log 文件中。
- 0 – stdin (standard input,标准输入)
- 1 – stdout (standard output,标准输出)
- 2 – stderr (standard error,标准错误输出)
当前目录下查看log.txt
tail -n 50 log.txt # 查看最后50行
head -n 50 log.txt # 查看开始50行
方法二:
srceen:Xshell上新建会话窗口,程序执行也不会受到窗口关闭影响
screen -S name # 新建
screen -r name # 打开
screen -D -r name # 先关闭再打开
ctrl+a + k # 杀掉窗口
screen -ls # 查看所有的screen会话
杀掉进程
nvidia-smi
可查看所有GPU进程,PID就是进程号。
查看某个进程的具体信息:
ps -ef|grep pid # pid为所需要查询的进程号
ps -ef|grep name # 查找当前服务器中所有包含字符串name的shell命令
然后执行以下命令杀掉进程:
kill -9 pid # pid为所需要查询的进程号
实时显示GPU的使用情况
watch -n 0.1 nvidia-smi # ---0.1秒进行刷新
查看服务器上运行的所有任务的内存,cpu占用情况等等
top
htop # 比top显示的更强一点
查看和杀掉僵尸进程
top # zombie前面的数字即为僵尸进程个数
ps aux | grep Z # 获取僵尸进程的具体信息,如进程PID
kill -s SIGCHLD pid # 杀掉僵尸进程
解压
解压zip文件,把/home目录下面的mydata.zip解压到mydatabak目录里面
unzip mydata.zip -d mydatabak
解压tar文件,是把etc.tar压缩文件可以解压到指定路径中(这里为解压到当前目录下的 date
文件夹中去)
tar -xvf etc.tar -C /date/