ubuntu各种实践笔记

一、精选命令

Ctrl+Alt+T:运行终端
CTRL + Shift + T:新建标签页。
Ctrl+Shift+C/V:在终端上复制/粘贴
Ctrl+L:显示当前文件夹的地址栏,按ESC恢复
Tab:终端上自动补全命令名或文件名
Ctrl+H:单次显示当前隐藏文件。永久显示,则需 参考
pwd:查看当前路径命令
F2:重命名。
top:查看内存、cpu等使用情况。
clear或reset:终端清屏,后者更彻底。前者与Ctrl + L 是等价的。
pwd:显示当前路径。
nvidia-smi:查询GPU使用情况。
rm+文件名:删除文件,可加 -fr 参数,f表示强制,r表示递归。
sudo passwd root:创建超级用户密码
su:转为超级用户。用 exit 退出,或者:su 用户名,转具体用户。
ctrl + r:查找以前终端用过的命令。
Ctrl + alt + Backspace:按词删除。
Ctrl+k 剪切此处至末尾的所有内容
Ctrl+u 剪切此处至开始的所有内容
Ctrl + Shift + F:终端内容查找。
Alt-r 撤销对本行所做的所有操作。
Ctrl + / 撤销刚才的输入。它是以是否按了TAB,END等操作键来区分上一次输入的。撤销后,没有前进的功能,所以慎重使用。
Ctrl+PageUp/PageDown:移动到上/下一个标签
Ctrl+Shift+O:水平分割终端
Ctrl+Shift+E:垂直分割终端
Ctrl+Shift+X:切换显示当前窗口(当前终端会变大,再次按恢复)
Ctrl+Shift+W:关闭当前终端。
Ctrl+Shift+Q:退出当前窗口,当前窗口的所有终端和标签页都将被关闭。
df -h:显示磁盘的使用情况
du -sh:显示当前文件夹的大小
ls -l 文件名:显示特定文件的大小
vim跳到文本的最后一行:按“shift+g”
touch 文件名:创建一个空文件
readlink -f 文件名:获取文件真实路径(绝对路径)
Ctrl+windows键+左右方向键:左右边半屏
按住win键(即super键):显示ubuntu的全体快捷键
super + 数字:快速打开任务栏对应的软件。
ln -s 源文件 目标文件 :建立软链接。

二、实用命令

一些ubuntu命令语法的学习,或者很小型的插件。上一章节是从这里精选出来的。
有空多学下这个博客

1、切分、合并文件
(1)切分文件 参考
split -b 100m 1111.log (按照字节分隔)
split -l 1000000 1111.log(按照行数分隔)
(2)合并文件 参考1参考2-文件交集/并集/去重复行

cat file1.txt file2.txt > file.txt : 将file1.txt和file2.txt合并到file.txt
cat file1.txt >> file2.txt: 将file1.txt追加到file2.txt的末尾

2、scp、rsync、cp、ftp等文件传输命令 参考 参考2

优先熟悉使用scp、rsync。不用学cp。

关于是否启用压缩
1.压缩只有在网络传输速度非常慢,以致于压缩后节省的传输时间大于压缩本身的时间。
2.压缩比很低的数据,不要再启用压缩(例如已经压缩过的数据、视频等)。
3.通常建议,传输前先压缩,而不是使用ssh的压缩;建议使用pigz/lbizp2等并行压缩工具。

(1)rsync参考1 参考2
-z 开启压缩
-v 详情输出
-r 表示递归
-a : archive mode 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。仅仅去掉-l,就会跳过软链接的文件。而如果-l改为-L参数就能拷贝软连接里面的内容。参考
–bwlimit 限速参数,单位kB/s。如果2MB/s是目标。估计能到2 000。1B=1byte=8b=8bit。
–progress 在传输时现实传输过程,相当于进度条。
–exclude=PATTERN 指定排除不需要传输的文件模式 参考
端口号、私钥文件,这两个可以在ssh的配置文件中设置,不用在这调参数。

# 从本地上传到服务器。限制速度 300kB 的例子。排除dataset这个文件夹。
rsync -avz --progress --bwlimit=300 --exclude=dataset humansegmentation username@172.??.??.4:/home/username

# 可以多份文件一起传送,我认为它会根据:来进行识别。
rsync -avz humansegmentation aa.txt bb.txt username@172.??.??.4:/home/username

注:
(1)不要再文件夹名后面加 / 符号,我实践结果是:虽然不报错,但同步不了该文件夹。
(2) 最后一个参数是目录名字,然后把前一个参数的名字加到该目录名字上。所以下面会出现重叠名字 xxx/hand_segment/hand_segment 的问题
rsync -avz xxx@xxx:/data1/xxx/hand_segment /media/xxx/private/hand_segment

(2)scp
常用参数:
-C 允许压缩。
-p 保留原文件的修改时间,访问时间和访问权限。
-r 递归复制整个目录。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-q 不显示传输进度条。

下面三个是指定端口、ssh私钥文件、ssh配置文件的:
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-P port:注意是大写的P, port是指定数据传输用到的端口号

scp -Cpr user@host:~/ufile .

(3)cp 参考
常用参数:
-a:此参数的效果和同时指定"-dpR"参数相同。
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。
-f:强行复制文件或目录,不论目标文件或目录是否已存在。
-p:保留源文件或目录的属性。

cp -a test/ newtest

3、time命令:用于打印出一条命令或一个程序的执行时间 参考1 参考2

time cp /home/h /home/Documents
# 输出的real代表的是程序从开始到结束的全部时间,即使程序不占CPU也统计时间。而user+sys是程序占用CPU的总时间,因此real总是大于或者等于user+sys的。

4、压缩文件

(1)tar 参考1 参考2 鸟哥私房菜P254

注意:
(1)如果非tar,仅gzip、bzip2,就自己查鸟哥书籍。
(2)不用学习-P大写,它是绝对路径的功能。解压会导致覆盖原数据的。只要没有-P,压缩都是去掉根目录了,解压规范就不会覆盖原数据。
(3)被压缩的文件,如果写成路径的形式,就会逐级新建文件夹的。
规范:不写路径,用cd打开到要压缩的文件,然后直接用该文件名进行压缩。
(4)其他拓展功能见鸟哥书籍,包括:大压缩包里面解压单一文件、选择目录下的部分文件压缩、备份系统设备镜像等特殊文件。

tar参数:
三种模式,仅能存在一个
-c :建立一个压缩文件(create 的意思);
-x :解压一个压缩文件!
-t :查看 tarfile 里面的文件!
重要参数:
-z :具有 gzip 的属性,后缀名.gz。
-j :具有 bzip2 的属性,后缀名.bz2。
-v :压缩的过程中显示文件
-f :使用档名,请留意,在 f 之后要立即接文件名,不要再加参数!
其它有用可选参数:
-C 大写:后接目录,用于解压时指定输出目录。
-p 小写:压缩时,保留备份数据的原本权限与属性。

tar+bzip2的例子【如果想gzip,参数j换成z,后缀名bz2换成gz】:
压缩:tar -jcv -f filename.tar.bz2 filename-要被压缩的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C filename-欲解压到的目录

(2)zip 参考

压缩:它会将 test.txt 文件压缩为 test.zip ,当然也可以指定压缩包的目录,例如 /root/test.zip

(1)压缩文件:
zip test.zip test.txt 

(2)压缩文件夹:
zip one_dir.zip one_dir/*  #有one_dir目录
与 cd one_dir; zip ../one_dir.zip *  #无one_dir目录

(3)多个源目标:
zip one_dir.zip 源文件名1 源文件名2 源文件夹1 源文件夹2

解压:默认将文件解压到当前目录,如果要解压到指定目录,可以加上 -d 选项

unzip test.zip 
unzip test.zip -d /root/ 

(3)各种压缩格式的区别 参考

zip兼容性最好。国外的朋友几乎不用rar。
rar独有格式也很好,带恢复,分卷稳定。速度和压缩比都尚可。
7z是比较常见的高压缩率速度也平衡的格式。
tar.gz在linux系统下用得多,但是在windows下普及率不高。
不同软件压缩、解压的速度也会因为优化而不同,综合来说7z是最常用最好用的格式。

6、ssh命令
(1)生成密钥:参考1
可以直接输入ssh-keygen 生成密钥。接着它会让你输入一个密码(可选为空),它用来加密私钥的。而公钥是可以发出去给别人的。

注:重新生成公私钥时,记得删除know_host。这个可能有用,不确定。

(2)远程登录 参考
登陆命令格式为:ssh 帐号@IP地址
例如:ssh Tom@192.168.135.249

(3)退出远程,用exit

(4)远程显示图片 参考1 参考2 参考3
直接 ssh ip -X -l username # 也就是多 -X 就行了,然后display或eog 打开图片命令就能够显示到本地。

(5)报错的解决
问题:port 22: Connection refused
解决:参考

# 后面还有一些,但是我只在被远程的机器用这两个命令后就解决了。
sudo apt-get update
sudo apt-get install openssh-server

(6)上传公钥到服务器后,本地需要重启才能有权限下载。迟些实践下是不是重启ssh服务就行了。
service sshd restart
参考
实践发现我用这个不可行,依旧要重启电脑。

(7)配置无密码登录 参考1 参考2
原理:将SSH公钥上传到Linux服务器。SSH公钥将保存在远程Linux服务器的.ssh/authorized_keys文件中。此后,仅首次使用SSH Key登录时需要输入一次SSH密钥的加密密码。

ssh-copy-id username@remote-server

拓展:见参考2,可以用-i参数来指定要添加指定的公钥。

(8)修改配置文件。包括设置IP地址的别名、端口、验证的私钥等。
参考1 参考2
vim ~/.ssh/config

# 服务器1
Host 别名
    HostName IP地址
    Port 22
    User 用户名
# 服务器2
Host 别名
    HostName IP地址
    Port 22
    User 用户名

(9)文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。可以设置为600。

7、ls命令 参考
-l:用来显示详细信息,包括日期、大小、权限、所有者等
-a:这会显示隐藏文件
可以上述参数结合:ls -la

另外,例如 ls **/*.txt:查看当前文件夹和子文件夹中的,所有 txt 类型的文件,也就是文件扩展名是 .txt 的文件

8、cmake
cmake …/src -DCMAKE_BUILD_TYPE=Debug ,后者参数是选择模式。参考

9、make
make -j:j是job的意思,后面可接具体并行数目。不写则是全体用。参考

10、vim 参考
(1)插入模式(按i键进入),正常模式(按Esc或Ctrl+[进入)。
(2):wq 保存并退出
(3)/ 命令模式下敲斜杆,然后输入关键字敲回车进行查找文本,继续查找此关键字,就敲字符 n。 参考
(4)自动补全:参考
CTRL-X CTRL-F:vim就会弹出下拉菜单,显示出当前目录下的可选目录和文件。
CTRL-N和CTRL-P:CTRL-P补全是向上查找以进行补全,而CTRL-N是向下查找以进行补全。
(5)跳转特定行。
输入:n,代表跳转到第n行,如:79,就跳转到第79行。
(6)跳转最后行、第一行 参考
非插入模式下,跳到文本的最后一行:按“shift+g”
非插入模式下,跳到第一行的第一个字符:按两次“g”
(7)搜索参考
在命令模式下敲斜杆( / )这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车。

敲字符 n 就可以向前查询下一个了。
敲字符N(大写N)就会向后查询;

(8)命令模式下删除文本 参考
dd 删除一整行
dw 删除到下一个单词开头
db 删除到前一个单词

11、apt 参考
(1)命令
install - 安装新的软件包
purge - 移除软件包和配置文件
(2)选项:
-y 默认对所有的询问选是。

12、监控磁盘读写状况 参考
安装并使用 iotop 就行了。

13、du 查看文件夹的大小 参考1参考2

du  -sh   # 输出的大小结果,与右键看属性的结果有出入。可能是计算方式不同。

du -h --max-depth=1  /myFold/  # 查看指定根目录下的各文件夹大小

14、df 查看当前文件系统各分区的大小 参考1参考2
df -h

15、打开图片参考
display a.jpg # 内置display的,不用再安装。

16、kill命令
kill -9 强制、尽快终止进程。参考1 参考2

17、统计文件数目
ls -lrt | grep 关键字 | wc - l

18、查看cpu信息 参考
cat /proc/cpuinfo

19、rm 删除命令参考
(1)删除以某字符串开头的文件
rm log* 删除以log开头的所有文件。

20、终端的编辑
更多Terminator快捷键
(1)删除输入
按词删除: Ctrl + alt + Backspace
Ctrl+k 剪切此处至末尾的所有内容
Ctrl+u 剪切此处至开始的所有内容
Ctrl+y 粘贴用上面两种方式剪切的内容

(2)查找
Ctrl + Shift + F:终端内容查找。
Ctrl + R:输入想要查询的字符,搜索包含这些字符的命令.

(3)撤销
Alt-r 撤销对本行所做的所有操作。
Ctrl + / 撤销刚才的输入。它是以是否按了TAB,END等操作键来区分上一次输入的。撤销后,没有前进的功能,所以慎重使用。

(4)标签页
CTRL + Shift + T:新建标签页。
删除标签页:暂时只能逐个终端删除,或者鼠标直接删除标签页。
Ctrl+PageUp/PageDown:移动到上/下一个标签

(5)控制当前标签页
Ctrl+Shift+O:水平分割终端
Ctrl+Shift+E:垂直分割终端
Alt+方向箭头键:移动到当前标签页的上下左右的终端。

(6)控制当前终端框
CTRL + L: 清楚屏幕。
Ctrl+Shift+W:关闭当前终端。
Ctrl+Shift+Q:退出当前窗口,当前窗口的所有终端和标签页都将被关闭。
Ctrl+Shift+X:切换显示当前窗口(当前终端会变大,再次按恢复)

21、chmod、chgrp、chown
(1)chmod 更改文件夹权限 参考

参数
-R 递归目录修改为相同的权限。

sudo chmod 777 文件名 # 每个人都有读和写以及执行的权限。
chmod -R 755 tools_dir/  # 递归

(2)chgrp 改变文件或文件夹所在的组 参考

chgrp  用户名    文件名  -R

(3)chown 改变文件或文件夹所有者 参考

chown 用户名   文件名  -R

22、wget 下载
参考
参数:
-c:小写c,继续执行上次终端的任务。
-O:大写O,指定写出的文件名。默认链接的最后一个 / 后面作为文件名。它也可以避免下载动态链接时文件名的不正确。

下载大文件,用断点续传 -c。
限速下载,只需要添加 -limit-rate=300k 参数自己调。
wget -c --limit-rate=300k  -O my_Ubuntu.iso  http://mirrors.163.com/ubuntu-releases/9.10/ubuntu-9.10-desktop-amd64.iso 

23、mkdir 建立新的目录
mkdir -p 加多-p这个参数会更好:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。

24、tail 查看文件最尾部的内容
参考

例子
(1)要显示 notes.log 文件的最后 10 行:
tail notes.log

(2)要跟踪名为 notes.log 的文件,不断刷新,只要它更新就可以看到最新的文件内容:
tail -f notes.log

25、ldd 打印程序或者库文件所依赖的共享库列表
参考
暂时没实践。

26、wget 下载工具
参考
参数:
-c, –continue 接着下载没下载完的文件,可以不怕断网。

wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip

27、curl 下载或者上传工具

与wget的区别:参考 wget更专一是用来下载的,curl是用来调试的。

参考
参数:
-I 只打印出HTTP头部信息。可以用于验证是否可以下载。

curl -I http://man.linuxde.net

三、各软件的安装

注:可以不用下载,不用学,也不影响ubutnu的使用。

里面有推荐很多很好用的软件,比如htop等 参考

1、dpkg各种操作deb后缀的软件
參考

sudo apt-get -f install # 依赖的安装
sudo apt-get update # 更新
sudo apt-get purge (软件名) # 卸载软件
sudo dpkg -l # 查看所有安装了的软件
sudo dpkg -P (软件名) # 卸载软件
sudo dpkg -i (软件名) # 安装软件

1-2、环境变量 参考1 参考2 参考3

总结:
(1)/etc/ 里面放的是全部用户的环境变量,~目录下放的是当前用户的环境变量。本地台式机留意:/etc/profile 和 ~/.profile 和 ~/.bashrc 这三个文件。
(2)使用source + 文件名,来立即生效。
(3)实测虽然echo $PATH 不能显示生效后的环境变量,但是我还是能用新增的python环境。
(4)export是增加环境变量、alias可以起别名。

export PATH="/home/username/anaconda2/bin:$PATH"
alias python27="/usr/bin/python2.7"

2、Notepadqq:与windows的notepad++相似。参考

sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq

3、codeblocks 参考

sudo apt-get install codeblocks

4、Foxit 福昕阅读器 参考
下载地址

$ cd /tmp 
$ gzip -d FoxitReader_version_Setup.run.tar.gz 
$ tar -xvf FoxitReader_version_Setup.run.tar 
$ ./FoxitReader_version_Setup.run 
论文标注颜色说明:
黄色:普通的知识点、注意点。
绿色:数据集。
浅紫色:文献、引用。
橙色:使用的算法、方法。
蓝色:业界存在的问题。
深紫色:个人暂时还存在疑问,还不能理解的知识点。

注:尽量写段的总结、文章总结,以后方便回顾。

自定义快捷键[参考](https://blog.csdn.net/wwlcsdn000/article/details/80483241):
H(hight):高亮
N(note):备注
S(summary):小结。会重新生成一份新的pdf,自动合并备注内容。

5、远程控制软件
(1)teamviewer 參考
可以不单单对32位(i386后缀)软件有效,64位(amd64后缀)也行。
(2)anydesk 直接官网下载就好。
wget也可以下载:参考

wget https://download.anydesk.com/linux/anydesk_4.0.1-1_amd64.deb

6、搜狗拼音 参考
注:对于ubuntu无法按shift切换搜狗输入法的中英文,可以设置Ctrl来切换中英文,但此方法重启后需重新设置。

也就是到搜狗官网下载deb文件,然后apt-install -f 安装依赖问题。以及语言支持的键盘输入系统设为fcitx。
接着注销。如果还显示不出来,就手动添加sogou。只要它在dpkg下能找到就行了。

如果异常,删除~/.config 下的搜狗输入配置文件夹: SogouPY 、 SogouPY.users 、 sogou-qimpanel ,重启搜狗输入法或者重装就行。

7、chrome浏览器 参考1 参考2

7.1、各种相关问题
(1)如果你安装完成却一直打不开,就用命令行打开它。如果看到的问题是:Please upgrade to the latest NSS,可用sudo apt-get install libnss3 解决。
(2)谷歌浏览器点击书签后在新标签页中打开 参考:鼠标滚轮点击、Ctrl单击
(3)推荐插件:Chrono下载管理器、Adblock Plus【弹窗拦截】
(4)拦截广告,如csdn上的。参考

7.2、常用快捷键:参考
(1)打开新窗口:Ctrl + n
(2)打开新的标签页,并跳转到该标签页:Ctrl + t
(3)重新打开最后关闭的标签页:Ctrl + Shift + t
(4)跳转到下一个打开的标签页:Ctrl + PgDn
(5)跳转到上一个打开的标签页:Ctrl + PgUp
(6)关闭当前标签页:Ctrl + w 或 Ctrl + F4

8、Pycharm
(1)安装与设置快捷方式 参考1 参考2
双击解压,打开bin目录,终端输入:sh ./pycharm.sh

上述安装完成后,需要设置快捷启动方式参考2

sudo gedit /usr/share/applications/Pycharm.desktop


[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3:The Python IDE
Exec="/地址/pycharm-community-3.4.1/bin/pycharm.sh" %f
Icon=/地址/pycharm-community-3.4.1/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm;

(2)激活 新的-参考旧的-参考最新参考-删掉hosts的两行可行
(3)无法输入中文问题 参考1 参考2
一般是可以的。但是实在遇到了,就用参考的。我最终是用参考1的在.sh文件的中间代码加了下面三行,并且把系统语言调为中文,又恢复为英文后,才可行了。真的不懂它。

export GTK_IM_MODULE=fcitx 
export QT_IM_MODULE=fcitx 
export XMODIFIERS=@im=fcitx

(4)卸载

rm -r pycharm-community-2017.3.3 # 删除解压得到的文件夹
rm -r .PyCharmCE2017.3  # 删除home目录下的配置文件夹

9、MEGA网盘 参考1 参考2

10、有道词典 参考

11、python第三方库
(1)安装python的pip 参考
方法1

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py

注:后面报错是安装其他东西出错,pip是成功安装了的。

方法2

sudo apt install python3-pip

(2)安装python的 scipy,numpy,matplotlib 参考1 参考2

sudo apt-get install python-scipy
sudo apt-get install python-numpy
sudo apt-get install python-pip
pip install numpy

更新包使用:pip install -U numpy
记得卸载时(注pip uninstall无法卸载apt-get安装的东西):sudo apt-get remove python-numpy

(3)下载各种py第三方包到本地 参考
注:如果不知道下载哪个版本好,就先pip安装,看到名称了就终止pip。

(4)pip -V 可以查看python的安装路径。

12、git 参考

sudo apt-get install git  

各种使用:
git clone --recursive 地址:自动初始化并更新仓库中的每一个子模块。子模块其实就是第三方库。子模块的操作参考

13、终端管理软件

目前还待学习获取的功能:(1)terminator 关闭整个窗口时,想多一个确认的窗口,避免手误。(2)如何保存环境,即使重启也能恢复,这个tmux应该可以。

(1)Terminator 参考1 参考2
配置文件:用参考1的,但把背景图background_color 注释掉,变为默认的黑色。background_type 也注释掉,这样就不会透明了。
快捷键:见参考2的。

Ctrl+Shift+T                    //打开一个新的标签  

拓展:同类软件tmux会更加好,配置会更加好。但是都是为了分屏。但是已经用着terminator了,所以仅开启fscg等时候用它。
(2)Tmux 参考1参考2参考3参考4参考5-介绍得比较系统参考6-用了它的关闭会话

用于避免重启,导致远程服务的中断。或者避免忘记之前要开启某个服务。嵌套在terminator下,开启tmux后关闭窗口,它就能在后台运行了,以后再恢复就行。
后续计划:需要找下本地的会话保存与恢复1本地的会话保存与恢复2本地的会话保存与恢复3鼠标能够滚动窗口内容。疑问需要重启才能验证是否成功,所以暂时未使用。可以把它当成一门课程,认真学习一下的。

tmux ls	# 显示所有会话
tmux new -s <session-name>	#新建会话,并指定会话名
tmux new	# 新建会话,会话名自动为数字序号
tmux a -t <session-name>	# 接入指定会话。不加-t就不能指定会话。
tmux detach	# 断开当前会话,等价于ctrl+b d
tmux kill-session -t <session-name>	# 关闭指定会话。已实践,好用!
tmux kill-session -a -t <session-name>	#关闭除指定会话外的其他所有会话
tmux kill-server	# 销毁所有会话并停止tmux

14、ubuntu查看硬件温度 参考

15、配置GPU运行环境的步骤总览(CUDA 8.0 + cuDNN + 显卡驱动 + mxnet)
(1)安装第三方库 参考
两大块都安装。时间半个小时到一个小时吧:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler 
sudo apt-get install –no-install-recommends libboost-all-dev 
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

(2)降低gcc到5.3。
(3)安装 cuda8 的run官方文件。不要安装里面的显卡驱动。
(4)安装补丁
sudo ./cuda_xxx_linux.run
(5)环境、链接 等配置。
参考网址上有点错误,= 是中文的,有多余空格。
(6)禁用X服务后,安装375版本的显卡驱动。参数命令中写不装opencl。 参考1 参考2
sudo ./NVIDIA-Linux-x86_64-375…….run –no-opengl-files
在安装驱动的时候,有一布问你”Would you like to run the nvidia-xconfig utility to automatically update your X configuration file…”什么的,选择 No。 参考

(7)运行例子发现,都是8.0/8.0,所以达到目标。接着遍历mxnet。发现报错是第三方库的问题,所以现在才去安装第二板块的第三方库,或者其他第三方库。如果报错是驱动问题,那就只需要重新装驱动,不需要卸载CUDA。不需要ubuntu右上角识别显卡驱动的,调用nvidia-smi 没报错就行。
(8)安装cuDNN
官网有一个测试样例的,好好利用它。 样例是/cudnn-sample-v5/mnistCUDNN 的项目名字。
参考 注意他是5.1的,所以把1改为0就行。
(9)mxnet的编译。每次重新编译,都需要你手动删掉以前的mxnet的build文件夹。不然它会跳过重新编译。
make -j4 台式机的用4个线程,不然会内存不够。以后编译也注意下,尽量指定下线程数目。

注意:make编译过的软件,不要变动目录位置,不然就要重新编译了。

15、CUDA

注意事项:
(1)安装驱动一定要手工去下载官方版本。
错误方法:打开系统设置->选择软件&更新->选择额外驱动->将N卡驱动设置为某个官方驱动

较好的参考博客1
较好的参考博客2
较好的参考博客3
(1)查看版本号 参考
cat /usr/local/cuda/version.txt
(2)安装
参考1 参考2
根据参考2,先安装一下第三方库。

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

在安装了cuda之后再安装nvidia驱动。先卸载驱动,降低gcc的版本到5.3。运行./cuda_8.0.61_375.26_linux.run 安装文件,不要安装里面的驱动,选择n,其他选y,目录默认。安装后配置下环境变量和动态链接库,安装好合适的驱动如果太高会自动CUDA9的。测试下例子。

sudo vim ~/.bashrc # 下面以CUDA8为例子。
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda


sudo vim /etc/profile
export PATH = /usr/local/cuda/bin:$PATH  # 在打开的文件末尾加入

sudo gedit /etc/ld.so.conf.d/cuda.conf  # 保存之后,创建链接文件
/usr/local/cuda/lib64 # 在打开的文件中添加如下语句

sudo ldconfig  # 然后执行使链接立即生效

测试例子

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery 
sudo make 
./deviceQuery

(3)卸载

cd /usr/local/cuda/bin
sudo ./uninstall_cuda_*.pl  # 这个文件得看你的版本号

(4)因为CUDA最高支持gcc 5.3,所以需要降级,我查文档也是这样说。可以先用博客的加一个 --override 选项方法,不行就看上面的降低gcc方法。
参考1 参考2
gcc 5.4时。你以为你会成功安装吗?并不是,你一定会碰到一个错误,Installation Failed. Using unsupported Compiler. ,这是因为 Ubuntu 16.04 默认的 GCC 5.4 对于 CUDA 8.x来说过于新了,CUDA 安装脚本还不能识别新版本的 GCC。看了一下安装日志,解决方案也很简单,加一个 --override 选项。参考

(5)显卡驱动的下载、安装、卸载 参考1 参考2
下载:如果直接官网,因为排版问题点击不了下载,再官网中点你想要进去的按钮右键复制出链接,用wget下载就好了。

安装:
– 选择合适的驱动版本。
注意!!!!版本!!!驱动版本:参考
NVIDIA graphics driver 375.88 or newer for CUDA 8
NVIDIA graphics driver 384.81 or newer for CUDA 9

显卡的驱动会决定cuda driver的版本 参考
CUDA 9.1: 387.xx
CUDA 9.0: 384.xx
CUDA 8.0 375.xx (GA2)
CUDA 8.0: 367.4x

– 如果使用 apt-get install 的安装方式,指定的版本无效的,375会自动变384。所以还是run文件安装吧。

我也实践证实过:我使用sudo apt-get install nvidia-375但自动下载的还是384版本的。参考
然后我尝试重新安装375.66,无奈用命令行安装375版本后,发现显示的版本还是384参考

我实践后判断下面这条言论:“在这里要解释一下为什么不从官网下载驱动。一开始我这样从官网下载驱动进行安装,重启之后出现了循环登录的问题。后来屏蔽了openGL组件的安装,可以解决循环登录的问题,但是又出现了CUDA无法安装的问题。”参考

– nouveau的问题:安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题。注意:重启系统(一定要重启)再验证nouveau是否已禁用,lsmod | grep nouveau。参考

– 不要安装opengl libraries,不然即使安装成功,也会出现循环登录的情况。参考

驱动安装选y(第一种方式选N是以为驱动是单独安装的),但是问你要不要安装opengl的时候,一定要选择n,其他一路选择y参考

– 先 sudo service lightdm start 后再重启。这样最稳妥。
参考1 参考2

卸载: 本节总启的两个参考,以及参考
原来是 apt-get 安装的卸载
sudo apt-get remove --purge nvidia-331-updates
原来是 run文件安装的卸载
sh ./nvidia.run --uninstall

(6)安装后可能遇到问题及解决办法

  • 重启循环进入登录界面的问题 参考

16、mxnet
(1)安装 参考

17、ubuntu按名称排序
可视化界面中,大小写是一样等级的,a与A一样,都是优先与b或B。只不过同等级下,小写a会稍微优先大写A显示而已。注意这是“显示”,不是真实的级别差别,所以A会优先与aA。

18、virtualbox 虚拟机
参考 到官网下载amd64即64位安装包
(1)磁盘大小我现在是64G。

(2)配套软件。安装win10虚拟机后,因为我是用来看论文,所以我只安装四个软件:chrome浏览器、mega同步器、福昕阅读器、notepad++、有道词典。

(3)安装增强功能:安装后,启动虚拟的系统,然后点击上面的菜单"Devices",选择最下方的Guest Additions进行安装。作用:有些高级一些的功能,比如剪贴板共享,文件夹共享等。
参考1 参考2
结果:重启后发现,桌面大小可以调节,剪贴板可以共享,但只支持主机往linux系统的虚拟机里面拖拽文件。
默认安装到的存放地址:/home/???/.config/VirtualBox/VBoxGuestAdditions_5.1.34.iso
解决问题:如果不能进行主机与虚拟机相互间的粘贴。就我的电脑->设备和驱动器->VirtualBox Guest Additions,不用真正重装,打开一下就行。以及打开virtualBox的控制平台,然后浏览下,最后点确定。

(4)共享文件夹
参考
到了映射网络驱动器的步骤时,因为不我知道填什么,我试过z:,也试过更换过z: 变成我共享的文件夹,并用过诊断解决。当然在配置好共享文件夹,即映射网络驱动器前,我重启过一次。最终我实现了一个共享文件夹。

19、安装有问题的软件,放弃安装了
(1)护眼宝、f.lux
这两个都是护眼软件。后者口碑好点。但是由于我有独立显卡,所以都不能使用。
使用wine安装护眼宝
安装f.lux

(2)sublime text 3
好一点的参考资料参考1 参考2

使用ubuntu软件库的,会出现中文输入不了问题。但是使用压缩包安装的话,右键文件打开却还是不能中文输入,以及需要自己创建快捷方式。
代替办法:使用gedit、vim、pycharm 进行编辑。
使用情况:如果是修改英文的配置文件,倒是可以用一下它,颜色会好看,也不用打开pycharm。
使用
subl :使用本软件打开某文本。

20、安装matlab 参考

第一次也是卡在登录界面进不去,第二次可行了。具体操作: 
(1)命令 umount matlab/ 我得去掉/ 。其实自行确保真正地取消挂载了就行,已被取消挂载的文件夹会自动变空的。 
(2)另外我激活Matlab、以及启动matlab的时候(即用到 ./matlab的时候)我都使用sudo
例子:在/usr/local/MATLAB/R2016b/bin 下启动 sudo ./matlab。

21、meld 比较两份文件,显示差异
参考1 参考2

sudo apt-get install meld # 安装
meld dir1 dir2 # 可以比较两个文件夹、文件都行。或者输入meld进入界面后,再选择要比较的文件。

22、uget 下载工具,类似于迅雷
参考

23、截屏
参考
按下 Shift+PrintScreen 快捷键截取任意矩形内容。

24、安装android studio
参考1 参考2
我不知道要不要装java8,我觉得装了也没关系,所以装了。打开软件后,要新建一个项目的,然后它报错,我在右下角处找到它提示解决报错的方法,实际就是下载一些东西。没报错后就可行了。
(1)报错:Expected NDK STL shared object file at xxx
解决办法:安装NDK 老些版本好点 14b 地址,解压后,修改项目中的local.properties文件的ndk.dir变量,ndk.dir=解压地址/android-ndk-r14b

25、安装 anaconda
去官网下载.sh安装文件,用 .点命令 直接运行文件,不要安装Microsoft VSCode。最后修改.bashrc配置文件

export PATH="/home/xxx/anaconda2/bin:$PATH"
alias python="/home/xxx/anaconda2/bin/python2.7"
alias python2="/home/xxx/anaconda2/bin/python2.7"
alias python27="/usr/bin/python2.7"

26、adb 安卓手机的控制
参考
(1)/sdcard/ 目录与 /storage/emulated/0/ 是同一目录。里面有DCIM等子目录。
(2)adb shell 命令

例子
# 直接进入手机内部系统。进入后很多命令都是与linux一致的。
adb shell 

# 在电脑端远程让手机内部执行一系列的命令。
adb shell "
export LD_LIBRARY_PATH=${DEPLOY_DIR}/libs;
cd ${DEPLOY_DIR}/;
mkdir results;
./testVideo ./test_video.cfg;
"

(3)push 推送文件进入手机
adb push 本地文件 手机地址
(4)pull 拉取文件会电脑
adb pull 手机地址 本地地址
(5)install 安装apk到手机
adb install 本地apk地址

27、资源监视器
参考1参考2
我暂时用着系统自带的

gnome-system-monitor

28、动态磁盘分区
(1)GParted 参考1参考2
已实践。这个不行,才去考虑下面的。
(2)使用系统自带的 LVM 参考1-终端敲命令参考2参考3参考4-弱的管理LVM卷的图形化工具

29、镜像下载
汇总网址中科大开源软件镜像官网

四、报错解决方法

1、C语言编译库的问题

include <boost/algorithm/string.hpp> #报错说没有这个文件。

参考来源
解决办法:sudo apt-get install libboost-dev

2、不要用分区助手随意调用分区的位置,会导致无法进入系统的。

3、pycharm编译时py2、py3混乱:
解法:这是因为你在切换windows和ubuntu时,编译会有记忆能力的。所以对于一份py代码,需要按py的右上角对单份文件进行切换py2,运行一次后,再切换回py3。

4、dpkg: error: dpkg status database is locked by another process 参考

sudo rm /var/lib/dpkg/lock  
sudo dpkg --configure -a 

5(后加)、报错:Sub-process /usr/bin/dpkg returned an error code (1) 参考

sudo apt-get update --fix-missing
sudo apt-get autoremove && sudo apt-get clean && sudo apt-get install -f # 自动删除多余安装包

5、’\r’的十六进制是d,ascii是13。’\n’的十六进制是a,ascii是10。
ubuntu 14(本台式机),直接融合\r\n成为一个\n,也就是根本没有\r的存在,也必不占据空间。
而ukylin、ubuntu16 认为 它们是独立的两个,先\r后\n。所以你在执行孙老师改进版的代码时,只用一个%c是只处理\r。所以\n会作为单独一行,而提前结束。

win 用 \r\n
linux/unix 用 \n
Mac OS 用 \r

6、ubuntu 运行sh 找不到命令参考
解法:右键要把属性里面执行的打钩。另外 ./表示执行脚本

7、地址路径有括号的问题 参考
在括号前加\


版权声明:本文为qimiejia5584原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。