远程服务器Linux使用技巧

1. 释放GPU内存

现象ctrl+z中断程序运行后,发现GPU内存没有释放(用$ nvidia-smi命令查看)
解决办法:kill 进程,释放内存

$ sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID

查找到PID号后,利用以下命令释放内存:

$ kill -9 11747 #  11747 is the PID number

再次执行 nvidia-smi 查看GPU使用情况。

2. 挂载远程目录到本地

背景:不喜欢Linux下vim编辑代码的方式,又不想来回的将本地代码拷贝到服务器
解决办法:将服务器目录挂载到本地,用本地编辑器编辑代码。
以Mac为例:

$ brew install sshfs

brew是Mac下的套件管理工具, 请参考Homebrew进行安装。

安装sshfs过程中可能会报错:
sshfs: OsxfuseRequirement unsatisfied!
You can install with Homebrew-Cask:
brew cask install osxfuse
You can download from:
https://osxfuse.github.io/
Error: An unsatisfied requirement failed this build.
按照提示,执行以下命令:

$ brew cask install osxfuse

安装成功后再次执行brew install sshfs命令。然后用sshfs挂载远程目录到本地:

$ sshfs -C -o reconnect <user>@<host>:<remote_dir> <local_dir>

例如,我的远程服务器是zhangsan@gpu-2,要挂载的服务器文件路径是 /home/zhangsan/tensorflow/,放到本地的路径是/Users/zhangsan/tensorflow/。则上面完整的命令就是:

$ sshfs -C -o reconnect zhangsan@gpu-2:/home/zhangsan/tensorflow/ /Users/zhangsan/tensorflow/

执行过程中系统会要求进入系统管理的安全设置里面,按照提示操作,并输入远程服务器登陆密码即可。
随后在本地路径会看到如下图标,双击打开进入就是远程文件。我们对这个文件的所有操作都等同于在服务器中操作。


每次重启电脑后要重新mount,如果觉得不方便,可以利用alias给这个命令设置别名。

$ alias sshfs1='sshfs -C -o reconnect zhangsan@gpu-2:/home/zhangsan/tensorflow/ /Users/zhangsan/tensorflow/'
$ source .bash_profile

这样,每次执行sshfs1就相当于上面一长串的命令了。注意:等号两边没有空格
这种修改方式只对当前终端窗口有效,再打开一个终端窗口或者重启系统就不起作用了。如果想永久使用别名,需要修改/etc/bashrc文件

$ cd /etc/
$ vim bashrc

将alias别名命令添加到最后,然后:wq!退出。

3. nohup print中文出现乱码

export PYTHONIOENCODING=gbk

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容