服务器常用命令操作

  • 问题记录
  • 释放显存或端口
  • pycharm带指令运行,替代.sh指令运行
  • pycharm相对路径出错
  • Linux服务器创建新用户
  • 灰屏处理
  • 针对初始用户
  • 针对使用过程中出现灰屏
  • 情况一
  • 情况二
  • 端口占用无法kill的情况
  • 个性化修改终端颜色
  • 软连接
  • Linux 服务器之间文件传输
  • 参考博客或文章


问题记录

本博客为我使用服务器所遇到的常见问题汇总

释放显存或端口

  1. 通过nvidia-msi查看服务器显存情况。
  2. 最常见情况是存在未停止进程,确认该进程未使用后,可利用kill -9 PID 命令直接释放。
  3. 复杂情况为,通过nvidia-msi未发现进程占用,或通过第二步后仍未释放显存,这时需要使用命令fuser -v /dev/nvidia*查看僵尸进程
  4. 查看进程的指令还有 ps -ef
  5. 再利用kill -9 PID PID PID,可批量杀死僵尸进程,完成显存释放。
  6. 使用python -m torch.distributed.launch进行多GPU训练时,出现端口占用RuntimeError: Address already in use报错也属于上述情况,可使用上述方法解决。
  7. 批量清理显卡中残留进程:
    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

pycharm带指令运行,替代.sh指令运行

有些开源程序常使用类似sh train.sh在shell下完成程序运行,这样虽然方便简洁,但是不利于修改代码后debug出现的问题,因此需要借助pycharm等编辑器。

操作如图所示,将torch分布式命令作为script路径配置,其他参数统一到参数配置下

gpu利用率浮动大 gpu利用率间歇性掉0_gpu利用率浮动大


gpu利用率浮动大 gpu利用率间歇性掉0_linux_02

pycharm相对路径出错

遇到相对路径出错的情况,请注意检查Debug Configuration配置下的工作目录(Working Directory)是否正确
另外在Settings-Project-Project Structure下将文件目录加入到Sources下,也可在主界面下选中右键Mark Directory as Sources完成同样操作

Linux服务器创建新用户

Linux服务器上创建账户用到useradd命名,一般常用以下命令:

$sudo useradd -m -s /bin/bash userName // 在/home目录下新建userName目录
$sudo passwd userName    //设置密码

会提示

Enter new UNIX password:
 
Retype new UNIX password:
 
passwd:password updated successfully

然后用新建的用户名和密码先登录服务器,不会出现界面,退出之后用管理员账号登录。

下面三个命令一般用不到,意思是在新建中不需要这三个命令,直接到配置桌面会话文件这一步。

$userdel -r userName    //删除用户
$useradd userName    //创建用户
$useradd -d /home/homeDir userName    //增加home目录

==========================================================================================
因为登录自己新建的用户之后不会出现桌面,而是灰色的画面,需要配置桌面会话文件,需要先sudo su进入root,进入新建用户的路径下,比如/home/XXX。

$sudo su      //进入root
$cd /home/usrDir     //进入新建用户的路径下
$echo xfce4-session>.xsession
$cat .xsession

创建成功之后会出现以下文件和一行命令xfce4-session

gpu利用率浮动大 gpu利用率间歇性掉0_Ubuntu_03


完成上述步骤后

以上步骤在未安装xfce桌面的系统可以省略

==========================================================================================
新账户下配置VNCSERVER,配置和重启都需要带端口号。
例如:在新建账户SSH下完成以下操作:
(1)建立vnc

$vncserver :1

(2)修改xstartup文件,具体参照灰屏处理第一条
(3)杀死进程

$vncserver -kill :1

(4)重开进程完成配置,可添加分辨率修改指令

$vncserver :1 -geometry 1920x1080

灰屏处理

针对初始用户

创建初始用户时,可能登录vnc灰屏(不提示错误),这时一般是xsartup未配置桌面导致

不同的桌面修改xstartup文件的配置不一样,需要根据实际情况调整,本文以Meta桌面为例。

gpu利用率浮动大 gpu利用率间歇性掉0_gpu利用率浮动大_04


将x-window-manager &注释掉

增加mate-session &

gpu利用率浮动大 gpu利用率间歇性掉0_Ubuntu_05


注:可以使用vncserver -geometry 1600x900 :1修改分辨率

针对使用过程中出现灰屏

情况一

使用vncserver -kill :1共用服务器务必带端口号)命令重启VNCviewer后由bashrc中anaconda未注释造成的灰屏情况只需要注释修改bashrc相应部分执行重启步骤即可

情况二

VNC错误描述
vnc viewer开启后弹窗提示

Could not connect to session bus:
Failed to connect to socket /tmp/dbus-XXXXXXXXXX:
Connection refused

关闭弹窗后又提示

Could not acquire name on session bus

问题分析
一般情况下为错误使用vncserver -kill命令造成了~文件夹下的配置文件损坏.
修复方法
因为无法登陆图形界面, 所以在ssh下修复, 具体方法如下:

登陆ssh, 关闭自己开启的vncserver进程

备份~文件夹下重要的隐藏文件, 如.bashrc文件

cp ~/.bashrc ~/bashrc.bak

删除~文件夹下所有隐藏文件

rm -rf ~/.*

输入exit登出账户, 再重新登陆ssh

重置~文件夹下的默认配置文件

cp -r /etc/skel/. /home/usrname

输入exit登出账户, 再重新登陆ssh

如果出现端口被占用无法kill端口

  1. 可能其他子账户错误登录端口,导致复用,使用其他账户退出,再kill后重启vnc即可。
  2. 未出现其他端口占用,可能是端口锁定导致,删除/tmp/路径下和/tmp/.X11-unix/路径下的对应端口。
  3. 使用命令ps aux | grep XXX 命令寻找Xvnc4 相关的进程kill后重启端口vnc即可。

端口占用无法kill的情况

使用sudo pkill -u username的方式终止该账户下的所有进程即可

个性化修改终端颜色

本文操作的例子操作系统为:Ubuntu 18.04 LTS

对于用户的配置,我们应该将配置信息写入~/.bashrc文件。

gpu利用率浮动大 gpu利用率间歇性掉0_bash_06

gpu利用率浮动大 gpu利用率间歇性掉0_Ubuntu_07


Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧1、颜色配置

为了设置终端颜色,我们需要对~/.bashrc文件中的PS1变量进行定制。首先通过“vim ~/.bashrc“命令打开文件,找到PS1变量所在位置:

gpu利用率浮动大 gpu利用率间歇性掉0_gpu利用率浮动大_08

Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧

bashrc文件中的PS1变量

上图就是我们需要修改的命令行提示符的颜色设置。

注释掉 #force_color_prompt=yes。在颜色模式打开的情况下,PS1变量代表的内容就是用户名+主机名+路径名(长路径)+ $

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

现在,我们就需要对显示的信息的字体颜色进行设置,首先看一下颜色是如何设置的:

一个单独的颜色设置: \033[代码;前景;背景m ,如:[\033[1;32;40m]表示高亮显示字体为绿色,背景色为黑色。

注意:颜色的设置,放在相应的要设置的前面,如用户名颜色设置: [\033[01;35;40m]\u

我们可以把第一个PS1替换成如下代码:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;40m\]\u\[\033[00;00;40m\]@\[\033[01;35;40m\]\h\[\033[00;31;40m\]:\[\033[00;00;40m\]\w \[\033[01;32;40m\]\$ \[\033[01;36;40m\]'

gpu利用率浮动大 gpu利用率间歇性掉0_linux_09

Ubuntu Linux终端颜色个性化设置技巧Ubuntu Linux终端颜色个性化设置技巧

或者我们把第一个PS1替换成如下代码

PS1='\[\e[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\$\[\e[m\]'

然后你重启终端,就可以看到刚才的配色效果,或者执行 source ~/.bashrc 命令也可以运行刚才的新配色终端。如下:

以下对PS1变量的设置进行具体分析,首先我们要知道如下几张表:

下面来说说配色的过程:

前景 背景 颜色

30 40 黑色

31 41 紅色

32 42 綠色

33 43 黃色

34 44 藍色

35 45 紫紅色

36 46 青藍色

37 47 白色

1 透明色

代码 意义

0 OFF

1 高亮显示

4 underline

5 闪烁

7 反白显示

8 不可见

在终端菜单→编辑→首选项→未命名→颜色,选择透明背景,调成你喜欢的透明度即可。

gpu利用率浮动大 gpu利用率间歇性掉0_linux_10

软连接

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,

具体用法是:ln -s 源文件 目标位置

不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

-f : 链结时先将与 dist 同档名的档案删除
  -d : 允许系统管理者硬链结自己的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为一般的档案
  -s : 进行软链结(symbolic link)
  -v : 在连结之前显示其档名
  -b : 将在链结时会被覆写或删除的档案进行备份
  -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
  -V METHOD : 指定备份的方式

如果要删除软连接,直接删除刚刚新建的目标文件就好了。
或者使用删除软连接指令:sudo unlink 目标位置 或 rm 目标位置

Linux 服务器之间文件传输

linux的scp命令:
  scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器.

有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。

1、将本机文件复制到远程服务器上

命令:

scp file_path_1 root@192.168.1.1:file_path_2

例子:

 scp /home/administrator/news.txt root@192.168.1.1:/etc/squid

说明:

file_path_1:本地文件的绝对路径

root:表示通过root用户登录到远程服务器(也可以是目标服务器的其他用户)

192.168.1.1:目标服务器的ip地址

file_path_2:要存储在目标服务器的地址(目录)

步骤:

首先会提示输入yes or no 建立ssh链接

按照提示输入登录用户的密码

然后会显示百分比开始复制文件、实际时间和传送速度等信息

2、将远程服务器上的文件复制到本地

命令:

scp root@192.168.1.1:file_path_1 file_path_2

例子:

scp remote@www.abc.com:/usr/local/sin.sh /home/administrato

说明:

root:表示通过root用户登录到远程服务器(也可以是远程服务器的其他用户)

192.168.1.1:是服务器的ip,当然也可以是网址。

file_path_1:表示的是欲复制到本机的位于远程服务器上的文件

file_path_2:表示的是将远程文件复制到本地的绝对路径

注意两点:

1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:

#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator

2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。

附加:

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

1.命令格式:

 scp [参数] [原路径] [目标路径]

2.命令功能:

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

3.命令参数:

-1  强制scp命令使用协议ssh1  

  -2  强制scp命令使用协议ssh2  

  -4  强制scp命令只使用IPv4寻址  

  -6  强制scp命令只使用IPv6寻址  

  -B  使用批处理模式(传输过程中不询问传输口令或短语)  

  -C  允许压缩。(将-C标志传递给ssh,从而打开压缩功能)  

  -p 保留原文件的修改时间,访问时间和访问权限。  

  -q  不显示传输进度条。  

  -r  递归复制整个目录。  注:当复制目录的时候用这个

  -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。   

  -c cipher  以cipher将数据传输进行加密,这个选项将直接传递给ssh。   

  -F ssh_config  指定一个替代的ssh配置文件,此参数直接传递给ssh。  

  -i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。    

  -l limit  限定用户所能使用的带宽,以Kbit/s为单位。     

  -o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,   

  -P port  注意是大写的P, port是指定数据传输用到的端口号   

  -S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

4.使用实例:

scp命令的实际应用概述:

从本地服务器复制到远程服务器:

(1) 复制文件:

命令格式:

scp local_file remote_username@remote_ip:remote_folder

或者

scp local_file remote_username@remote_ip:remote_file

或者

scp local_file remote_ip:remote_folder

或者

scp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名

第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名

(2) 复制目录:

命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder

或者

scp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要输入用户密码;

第2个没有指定用户名,命令执行后需要输入用户名和密码;

从远程服务器复制到本地服务器:

从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。

实例1:从远处复制文件到本地目录

命令:

scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/