10. Ubuntu关闭anaconda自动进入base虚拟环境
在Ubuntu上安装完anaconda后,发现每次打开终端后都会自动进入到base的虚拟环境中去,虽然在这些环境下使用问题不大,但一些软件的安装在虚拟环境下有影响。每次使用conda deactivate退出也很麻烦。如何关闭自动打开的虚拟环境呢,可以采用如下命令:
conda config --set auto_activate_base false
在最新的anaconda安装后将其加入到bashrc中后,会默认自动激活基础环境,上面的命令就是将其自动激活的true更改为false,即可关闭虚拟环境,以后需要使用直接用命令行即可。
conda activate spacename //spacename 为指定的环境名称
1. 服务器远程连接 ubuntu16.04 server。
第一步、 在自己的终端连接上该 ubuntu16.04 server, 如 IP地址为192.168.10.10。
命令:$ ssh rootUser@192.168.10.10
输入密码(root目录密码):12345678
第二步、创建新用户:非root
1、在 root 用户下运行以下命令,创建一个新用户,如 userName
$ sudo useradd -m -s /bin/bash userName
2、将新用户加入超级管理员组
$ sudo usermod -a -G sudo userName
3、为新用户设置密码,输入如下命令再输入密码两次(如设置为55667788)。
$ sudo passwd userName
4、切换新用户
$ su userName
5、切换成功,@前是新用户名,如切换成功后显示 userName@localhost:,而不是rootUser@localhost:了。
第三步、重启终端,直接登录自己创建的用户名目录即可,可不需要再登录root目录下了,输入如下命令,和密码(密码为之前创建的新用户密码,即55667788)。
$ ssh userName@192.168.10.10
再输入密码:55667788
2. 挂载外接移动硬盘。
2.1 插入移动硬盘,查看外接硬盘的盘符
$ sudo fdisk -l
可看到所有硬盘信息和分区信息
2.2 挂载
2.2.1. 先查看根目录有没有media这个文件夹, 再在这个目录下创建自己想要的目录,如创建命名为XXX的文件夹,作为要挂载的目录(如果在media中有了之前创建的文件夹XXX,则可不用再创建)。
$ sudo mkdir /media/XXX
2.2.2 将这个目录的权限改成与自己账户的权限一样。
$ sudo chmod 755 /media/XXX
2.2.3. 然后把移动硬盘挂载在这个文件夹上
$ sudo mount -o rw /dev/sdb2 /media/XXX
挂载之后移动硬盘相当于系统的一个文件夹了。
-o 指定挂载文件系统时的选项
ro 以只读方式挂载
rw 以读写方式挂载
3. 解决ssh连接后长时间不动断开问题。
1)进入/etc/ssh/sshd_config文件并修改或者添加。找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号("#")去掉; 如果里面没有ClientAliveInterval、ClientAliveCountMax,则添加。
命令: $ sudo vi /etc/ssh/sshd_config
2) 将ClientAliveInterval对应的0改成60,数值是秒
ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送.
ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.
ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开.
正常情况下, 客户端不会不响应.
3)重起sshd服务:
命令:$ sudo service sshd restart
4. 程序后台执行:如何能够在Linux下客户端断开SSH连接后,让程序继续在后台执行——使用screen。
Linux下断开SSH连接后,让程序继续在后台执行
让程序在服务器自己跑,用screen就好了。
$ screen -ls # 列出当前所有的session
$ screen -S sessionName # 创建一个名为sessionName的session
$ screen -r sessionName # 恢复到名为sessName的session
$ screen -d sessionName # 远程detach某个session
$ screen -d -r sessionName # 结束当前session并回到sessionName这个session
$ screen -wipe # 检查目前所有screen作业,并删除已经无法使用(即Dead)的screen作业。
$ screen -S sessionName -X quit # 杀死一个会话并退出
$ screen kill 28475 # 终止ssd窗口对应任务的运行,同时杀死该窗口
4.1.安装screen命令
$ sudo apt install screen
4.2.创建一个screen会话并进入
$ screen -ls
在创建screen之前,最好通过screen -ls命令查看一下,当前用户已创建的screen,避免命名冲突,然后用screen -S 会话名创建会话。
$ screen -S sessionName
然后接着执行该执行的命令或者程序,如进入其他文件夹执行深度学习的训练。
sessionName 为创建好的会话,以后进入和退出该sessionName
4.3.退出screen
$ screen -d sessionName
然后可以断开网络连接,或者关闭电脑都行,程序会在后台继续运行。
注意:如果是直接按住ctrl+a,再按d的话,或者是输入exit,是直接退出并kill掉screen了。
4.4.重新连接查看screen
$ screen -r sessionName
也可以用进程号进入
例如显示:
There is a screen on: 78560.sessionName
$ screen -r 78560
4.5.销毁一个会话并退出
$ screen -S sessionName -X quit
5 服务器上多块GPU时选择指定GPU使用
场景:
比如我们有一台服务器,在这个服务器上有多块GPU可以供使用,但此时只希望使用第1块和第3块GPU,但是我们希望代码能看到的仍然是有两块GPU,分别编号为0, 1,这个时候我们可以使用环境变量CUDA_VISIBLE_DEVICES来解决这个问题。
比如:
CUDA_VISIBLE_DEVICES=1 只有编号为1的GPU对程序是可见的,在代码中gpu[0]指的就是这块儿GPU
CUDA_VISIBLE_DEVICES=0,2,3 只有编号为0,2,3的GPU对程序是可见的,在代码中gpu[0]指的是第0块儿,gpu[1]指的是第2块儿,gpu[2]指的是第3块儿
CUDA_VISIBLE_DEVICES=2,0,3 只有编号为0,2,3的GPU对程序是可见的,但是在代码中gpu[0]指的是第2块儿,gpu[1]指的是第0块儿,gpu[2]指的是第3块儿
开始设置环境变量,有两种方式:临时和永久方式。
临时设置:
Linux: $ export CUDA_VISIBLE_DEVICES=1
windows: $ set CUDA_VISIBLE_DEVICES=1
永久设置:
linux:
在~/.bashrc 的最后加上export CUDA_VISIBLE_DEVICES=1,然后source ~/.bashrc
windows:
打开我的电脑环境变量设置的地方,直接添加就行了。
6 本地与服务器传输文件
使用FileZilla进行文件传输。FileZilla是一个免费开源的FTP软件。
-
在本机上安装FileZilla客户端。 输入: sudo apt-get install filezilla
-
启动filezilla。 直接在终端输入filezilla即可。 $ filezilla , 如图所示:
分别填写 Host , Username, Password, Port, 最后点击Quickconnect。 就可以连接到服务器,并进行文件的下载和上传啦。 -
从本地上传文件到服务器
在Local site下,选择文件或者文件夹,单击右键,选择Upload。提示:想从本地上传文件到服务器具体位置,首先在Remote site选择好服务器的具体地址,然后再在Local site上点击右键下载。
- 从服务器下载文件到本地
在Remote site下, 选择文件或者文件夹,单击右键,选择Download。提示:同理,想从服务器上传文件到本地具体位置,首先在Local site选择好本地的具体地址,然后再在Remote site上点击右键下载。
借鉴的博文链接:https://blog.csdn.net/u013250416/article/details/78075590
7 创建软链接到文件夹
创建软链接
ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录。
正确例子:链接object的文件到data文件夹下
ln -s /home/zhangsan/data/KITTI/object /home/zhangsan/project/data
注意!!!:最好一定要以/home/zhangsan/data…形式进行链接,如果直接在object目录下打开终端,然后输入 ln -s object /home/zhangsan/project/data,则可能产生的是个错误的链接。
删除软链接:进入链接到的那个文件夹下,直接删除该文件。
rm -rf b 注意不是rm -rf b
8 换源(conda更换清华源)
打开终端,依次输入
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --set show_channel_urls yes
9 移动硬盘挂载问题
当外接的移动硬盘读取出现如下问题的时候,一般是在复制数据或者未完全退出移动硬盘(U盘)工作的时候突然拔出或者传输数据松了,导致移动硬盘和ubuntu系统的连接出现错误:
Error mounting /dev/sdc1
at /media/wushengyu/Element:Command-line`mount-t"ntfs" -o
…
… $MFTMirr does not match $MFT(record 0).
Failed to mount ‘/dev/sdc1’:Input/output error
NTFS is …
…‘dmraid’ documentation
for more details.
上面的 Element 就是我的移动硬盘(U盘)
出现这种错误的解决方法:
在终端输入:
sudo ntfsfix /dev/sdc1