系统安装和分区设置
按以下顺序和大小安装
<1>、”交换空间”,相当于windows下的虚拟内存。建议大小:(理论值为实际内存的两倍),设置为电脑内存大小即可,选择逻辑分区,空间起始位置。
<2>、“/boot”。包含系统内核和系统启动所需的文件,实现双系统的关键所在。建议大小:200M。个人认为设置1G较好。选择逻辑分区,空间起始位置。
<3>、“/”分区(跟目录)。大致相当于windows下的系统盘(C盘),存放系统文件,当在Ubuntu下安装一些软件时,有可以选择路径的,就可以选择“/home”里面,即自定义软件安装路径,但还有一些不能选择安装路径的,就会安装到“/”分区,大部分软件是默认安装到“/”分区下的。还有一点就是这个分区下是不能像平时一样选择”删除”、”复制”、”粘贴”的,选择一个文件或文件夹,右键,是没有这些”删除”…选项的(我不确定是不是所有的文件和文件夹都是这样,毕竟我没有都试一遍)。(当然可以通过一些命令来实现”删除”、”复制”、”粘贴”、”新建”这些功能的,)。 建议大小:10-20G。个人认为大点较好,选择主分区,空间起始位置。
<4>、“/home”分区(用户的家目录)。这个就相当于windows下的非系统盘,像D盘、E盘、F盘…,除了一些特殊的文件,可以像在windows下一样,任意”删除”、”复制”、”粘贴”、”新建”,平时下载的东西都会保存在这个分区,这个分区主要就是用来存放文件。建议大小:磁盘剩余部分。选择逻辑分区,空间起始位置。
同时为了避免每次sudo都要输入密码,这里配置一下visudo:
sudo visudo
在文件最后加上一句(改为自己的用户名):
pengzhihui ALL=(ALL) NOPASSWD: ALL
目录结构
- /usr 为系统级应用程序的目录,可以理解为C:/Windows/
- /usr/local 为用户级应用程序的目录,可以理解为C:/Program Files/
- /opt 主要存放手动安装的软件,可以理解为D:/Software/,用于放置大型软件,当硬盘容量不够时可以单独挂载到其他磁盘
- 通过apt-get安装的软件
- 下载的软件存放在:/var/cache/apt/archives
- 安装后软件默认位置:/usr/share
- 可执行文件位置:/usr/bin
- 配置文件位置:/etc
- lib文件位置:/usr/lib
网络设置
ubuntu18以上/etc/network/interfaces 已经不再生效
https://www.hi-linux.com/posts/49513.html# 查看和验证ip:ip a
管理员常用命令
查看硬件型号或软件版本 ```bash查看CPU型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看ubuntu版本
cat /proc/version uname -a lsb_release -a
查看显卡驱动版本
sudo dpkg —list | grep nvidia-* lspci | grep -i nvidia
查看cuda和cudnn版本
cuda版本: cat /usr/local/cuda/version.txt cudnn: cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
查看Python解释器
sys.executable
系统语言编码```bash# 更改系统语言编码设置:在~/.bashrc中添加export LC_ALL=C.UTF-8# 查看系统语言编码当前状态:locale ,查看支持的语言编码:locale -a
磁盘管理
# 统计文件夹内文件数量(包括子文件)ls -lR | grep "_" | wc -l# 统计文件夹内文件数量(不包括子文件)ls -l | grep "_" | wc -l# 统计文件夹大小du -h --max-depth=1 ./# 查找大文件find / -xdev -size +100M -exec ls -l {} \;# 查看磁盘分区信息sudo fdisk -l# 查看有没有没挂载的硬盘lsblk# 查看磁盘大小和挂载情况df -Th# 弹出挂载的U盘gio mount -e /run/media/donhost/不可移动的磁盘 //弹出指定设备(这里-e 选项只能写挂载点)# 挂载磁盘(待整理)mount /dev/sdb1 /mnt/sdb1mount -t cifs -o username='gaofen',password='iecas`12',file_mode=0777,dir_mode=0777 //192.168.30.3/share2T/项目备份/ /mnt/Data_50_2/sudo mount -t nfs -o rw 192.168.6.83:/mnt/ExtraDisk/geoai_storage/ /mnt/ExtraDisk/geoai_storagesudo mount -t ext4 /dev/sda2 /mnt/ExtraDisk
管理用户和用户组
# 设置root密码passwd root# 1、创建新用户sudo adduser username# 其中username是你要创建的用户的名字,然后设置密码还有相关信息就可以了# 2、赋予新用户sudo权限# 用adduser创建后的新用户是不能使用sudo的,因为还没有赋予相关root权限,执行以下代码赋予权限# adm是给管理员权限,sudo是给可以使用sudo的权限sudo usermod -a -G adm [username]sudo usermod -a -G sudo [username]# 给所有用户使用docker的权限sudo usermod -aG docker $USER# 3、删除用户# 当需要删除用户时可以使用以下指令sudo userdel -r username# 这个指令会删除用户username并把该用户下的所有文件(/home/username/路径下的所有文件)都删除,若要保留这些文件而仅仅删除用户,可使用以下指令sudo userdel username# docker新用户赋权限sudo gpasswd -a <用户名> dockersudo service docker restart# 检查特定用户属于哪个组groups [username]# 查看所有用户组, 第一个字段是用户组名sudo cat /etc/group# 查看所有用户, 开头是用户名sudo cat /etc/shadow# 改变文件夹所有者,其中用户组名users不必须sudo chown -R username:users Document/
更改文件或文件夹权限
sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)sudo chmod 666 ××× (每个人都有读和写的权限)sudo chmod 777 ××× (每个人都有读和写以及执行的权限)其中×××指文件名(也可以是文件夹名,不过要在chmod后加 -R -ld)。
查看ip和6006端口使用情况
sudo netstat -tunlp |grep 6006# 杀掉占用端口的进程8790kill -9 8790# 查看ipifconfig
运行或监控常用指令
可视化查看CPU和内存使用情况:gnome-system-monitor
# 命令行查看CPU占用情况sudo apt-get install htophtop# 或者直接用top,不需要安装# 查看内存使用情况free -mfree -m -s 5 # 每5秒打印一次# 查看GPU实时情况,每秒更新一次watch -n 1 nvidia-smi# 查找文件sudo find [搜索路径] -name [*文件名*]如目录下查找文件:find ./ -name "detections.pkl"# 查看历史指令并过滤history | grep xxx
工作常用命令
1. 压缩与解压
.zip文件
# 感觉.zip占用空间比.tar.gz大unzip FileName.zip # 解压zip FileName.zip DirName # 将DirName本身压缩zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩
.gz文件
# .gzgunzip FileName.gz # 解压1gzip -d FileName.gz # 解压2gzip FileName # 压缩,只能压缩文件
.tar.gz文件、 .tgz文件
# .tar.gz 和 .tgztar -zxvf FileName.tar.gz # 解压tar -xjvf [NAME].tar.bz2tar -zcvf FileName.tar.gz DirName # 将DirName和其下所有文件(夹)压缩tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径sudo tar zcf - airport_data/ | split -d -b 2G - airport_data.tar.gz. # 分卷压缩
2. 软链接
ln -s [实际存放路径] [链接路径]# 例如# ln -s /ssd2/other/kongly01/.vscode-server ~
3. 文件输出重定向
# 示例./test.sh > log.txt 2>&1python mainroute.py 2>&1 >log.txt
上面的调用表明将./test.sh的输出重定向到log.txt文件中,同时将标准错误也重定向到log.txt文件中。
每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入;1:标准输出;2:标准错误。
2>&1表明将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出),为什么1前面需要&?当没有&时,1会被认为是一个普通的文件,有&表示重定向的目标不是一个文件,而是一个文件描述符。在前面我们知道,test.sh >log.txt又将文件描述符1的内容重定向到了文件log.txt,那么最终标准错误也会重定向到log.txt
4. 后台运行
nohup 命令后加&,如
nohup python mainroute.py 2>&1 >log.txt &
screen(推荐)
创建出的screen有两种状态,attached和detached,前者表示用户正在使用,后者表示在后台运行。
# 创建一个虚拟终端hello# 如果之前有创建唯一一个同名的screen,则-R会直接进入之前创建的screenscreen -R helloscreen -S hello# 保持这个screen到后台并回到主终端# 先按ctrl+a,再按d# 如果意外退出导致screen还处在attached状态,使用下命令变为detachedscreen -d hello# 回到虚拟终端screen -r hello# 查看虚拟终端screen -ls# 清除虚拟终端# 进入对应虚拟终端,然后输入:exit# screen内中文乱码# https://cloud.tencent.com/developer/article/1844735
tmux
https://www.ruanyifeng.com/blog/2019/10/tmux.html
# 启动和退出 ctrl+d 或者 exittmux# tmux attach命令用于重新接入某个已存在的会话tmux a
5. 软件配置
Vim
# 临时显示行数# 在vim中, 按ESC键退出编辑内容模式,输入“: set number”后按回车键,就可以显示行号了# 永久显示行数vim ~/.vimrc# 在打开的vimrc文件中最后一行输入:set number ,然后保存退出。再次用vim打开文件时,就会显示行号了。
6. 其他指令
# 查看某个路径的文件结构tree ./xx# 从本地拷贝文件到远程服务器scp local_file remote_username@remote_ip:remote_folder# ssh登录# 编辑本地的~/.ssh/config 文件,可以给ssh用户名和ip起别名,方便登录,如Host tencentHostName xx.xx.xxx.xx(ip)User rootPort 22# 生成ssh密钥公钥对 ssh-keygen -t rsa -f yourkeyname -C "备注"ssh-keygen -t rsa -C "LingyuKong"# ssh免密登录, 命令将本地的公钥拷贝到远程服务器# ssh-copy-id [-i [identity_file]] [user@]ip 如ssh-copy-id root@23.25.345.34# 显示包括xxx内容的所有文件,只显示文件名ag xxx
快捷键
选定部分区域截图并保存到剪贴板:ctrl+shift+Prtsc
.bash_profile文件的编写规则
这个文件用来设置用户环境变量,语法遵循shell
- 定义变量时变量名和等号之间不能有空格,如your_name=”kly”
- 使用一个定义过的变量,只要在变量名前面加美元符号即可。如打印变量名:echo $your_name或者echo ${your_name}
- 原本应该换行的代码写到一行时,需要用分号加空格;进行分隔
- 使用alias命令给某个路径下的可执行程序起别名:alias [别名]=[指令名称]
- 使用export命令设置环境变量
- export PATH:定义环境变量PATH
- export CUDA_HOME=/ssd1/shared/local/cuda-10.1:定义并设置环境变量CUDA_HOME
- export PATH=/ssd1/shared/local/anaconda3/bin:$PATH:为环境变量PATH增加一条记录(linux环境变量是用冒号隔开的)
更详细的shell语法规则见:https://www.runoob.com/linux/linux-shell.html
Linux命令大全:https://www.runoob.com/linux/linux-command-manual.html
修改完.bash_profile文件后需要运行命令source ~/.bash_profile来使文件生效
常用的配置文件
.bashrc .tmux.conf .vimrc
不显示中文,在.bashrc编辑
# 先用locale命令看一下现在采用的编码# 用locale -a看一下支持的编码,然后改.bashrcexport LANGUAGE="zh_CN:zh"export LANG="zh_CN.UTF-8"export LC_ALL="zh_CN.UTF-8"
.vimrc
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencoding=utf-8set encoding=utf-8set number "显示行号"set autoreadset autowriteset nocpset rulerset autoindentset cindentset tabstop=4 "tab缩进4位"syn oncolor desert
好玩的东西
在ssh登录后,默认打印上一次登录的日期时间,其实可以通过设置打印自定义的内容如下图
vim /etc/ssh/sshd_config# 加入下面两句话PrintMotd yesPrintLastLog no# 编辑完后重启sshsudo service ssh restart# 或者 sudo service restart sshd# 在motd文件中写上想输出的内容即可vim /etc/motd
