- Linux就该这么学 (大而全)
- Linux工具快速教程 (小而精)
- Linux达人养成计划1 (视频讲解)
- labuladong的Linux (简述)
准备工作
- 系统安装
- 用gnome-tweak-tool配置
- 字体大小调整
- 让笔记本合上后仍不休眠:调整power相关设置
- 安装搜狗输入法
- 阿里云服务器ECS安装Ubuntu18.04桌面图形环境 (
最便宜的套餐速度很慢,还不如用实验室的服务器)
安装
- Linux软件安装到哪里合适,目录详解
- /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32
- /usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下(这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。)
- /opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中指令集合:
/bin:存放着最常用的程序和指令
/sbin:只有系统管理员能使用的程序和指令外部文件管理:
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。临时文件:
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。账户:
/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。运行过程中要用:
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。扩展用的:
/opt:默认是空的,我们安装额外软件可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)
- Clion安装及配置(Linux环境下),(Windows环境下)
- 创建桌面快捷方式(以clion为例)
- 方法1:直接在Tools菜单里操作
- 方法2:自己创建
- 首先在终端下输入
cd /usr/share/applications/
- 进入applications目录下,建立一个clion.desktop文件
sudo touch clion.desktop
- 然后在vim命令下编辑该文件
sudo vi clion.desktop
,进入vim后,按i插入开始编辑该文件,输入以下代码
- 首先在终端下输入
[Desktop Entry]
Encoding=UTF-8
Name=CLion
Comment=clion-2021.1.3
Exec=/home/m/mSoftware/clion-2021.1.3/bin/clion.sh
Icon=/home/m/mSoftware/clion-2021.1.3/bin/clion.svg
Categories=Application;Development;Java;IDE
Version=2021.1.3
Type=Application
#Terminal=1
- VSCode 配置smms图床
- 安装xclip
sudo apt-get install xclip
- 在smms网站注册账号,home-> API Token,复制Secret Token
- 在visual studio code中找到picgo插件,然后点齿轮图标配置插件(extension settings),找到Smms:Token,将Secret Token复制到里边
- 正文中,ctrl+alt+u上传即可
- 安装xclip
卸载
- dpkg –list 查看软件
- 删除软件包命令:sudo apt remove
- 清理不再使用的依赖和库文件: sudo apt autoremove
- 移除软件包及配置文件: sudo apt purge
- 查找软件包命令: sudo apt search
- 列出所有已安装的包:apt list –installed
- 列出所有已安装的包的版本信息:apt list –all-versions
自带的Terminal设置(轻量级)
-MacOS10.15以后,终端换用zsh的方法如下:
vim .zshrc
export CLICOLOR=1
export LSCOLORS=ExGxFxdaCxDaDahbadeche
autoload -U colors && colors
PROMPT="%{$fg_bold[cyan]%}%n%{$reset_color%}@%{$fg_bold[cyan]%}%m %{$fg_bold[green]%}%1~ %{$reset_color%}%#"
:x
- Jetson AGX Orin安装Anaconda、Cuda、Cudnn: 与普通Ubuntu上的安装方式不太一样,要严格按照烧录进去的cuda对应的版本来安装
使用
基础
- 文件权限
chmod [谁][怎么修改] [哪个文件]
- [谁]
u: 对于 User 修改
g: 对于 Group 修改
o: 对于 Others 修改
a: (all) 对于所有人修改 - [怎么修改]
+, -, =: 作用的形式, 加上, 减掉, 等于某些权限
r, w, x 或者多个权限一起, 比如 rx - [哪个文件]
施加操作的文件, 可以为多个
- [谁]
- 也可以用数字 rwx分别对应421, 如
chmod 777 file.txt
,全部都可读可写可执行 - 使用脚本#!/usr/bin/python3 ,告诉电脑执行该程序时用python3
- 查看指定目录大小: du -h –max-depth=1 /path/to/directory
远程调试
- Python
- C++
Misc
- Linux查看GPU / CPU、内存和磁盘使用情况
- top -s 10 : 每隔10秒刷新一次
使用服务器时遇到的issue
工具
- 搜索工具fzf 查找
- VIM编辑器
- 常用命令
- Vim中如何全选复制粘贴
全部删除:按esc键后,先按gg(到达顶部),然后dG.
全部复制:按esc键后,先按gg,然后ggyG.
全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG.
单行复制:按esc键后,然后yy.
单行删除:按esc键后,然后dd.
粘贴:按esc键后,然后p.
gg是光标定位到文件首行,V是进入可视模式,G是跳转到文件最后一行,这个时候就将文本全选了
依赖项
Windows和Ubuntu服务器之间复制粘贴解决方案
ctrl+alt+del 打开任务管理器,ctrl+F 查看进程中是否有rdp进程,若有,则结束该进程
windows+r, 输入
rdpclip.exe
, 回车重新启动该进程(备选)
- 安装软件
sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop
- 重启Ubuntu
在Linux中clone仓库时,出现
GnuTLS recv error (-110): The TLS connection was non-properly terminated
- 安装必要的git依赖库
sudo apt-get install build-essential fakeroot dpkg-dev -y sudo apt-get build-dep git -y sudo apt-get install libcurl4-openssl-dev -y cd ~ mkdir source-git cd source-git/ apt-get source git cd git-2.*.*/ sed -i -- 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control sed -i -- '/TEST\s*=\s*test/d' ./debian/rules dpkg-buildpackage -rfakeroot -b -uc -us sudo dpkg -i ../git_*ubuntu*.deb
- 安装必要的git依赖库
重复执行多次可执行文件(或者命令行)
先产生一个可执行文件
1. 命令行输入
vim hello.cpp
2.
#include<iostream>
using namespace std;
int main(){
cout << "hello world" << endl;
return 0;
}
3. 命令行输入
g++ -o h1 hello.cpp
再建立一个脚本: vim run_loop.sh
,并在run_loop.sh中确定运行次数j:
#!/bin/bash
j=6
for ((i=0; i<j; i++))
do
./h1
#可以换成其他命令,如 echo $i
done
然后运行可执行文件 bash run_loop.sh
,则输出j次 hello world
- 线程
There are two kinds of thread: std::thread is a software thread, while std::thread::hardware_concurrency() returns the number of hardware threads.
A sofware thread doesn’t need a dedicated hardware thread, the operating system can and will schedule different software threads to share the same hardware threads. In fact, there are usually several orders of magnitude more software threads than there are hardware threads on the machine.