Linux101
Linux Bash
参考资料
- USTC Linux 101
- linux crash course
- surviveCS/服务器使用/from bare machine to a basic server.md at main · zpqqq10/surviveCS · GitHub
进程管理
终端中Ctrl+Z暂停命令, Ctrl+C停止
tmux
-
启动tmux会话 train_session是我们自己指定的名字
-
在新的终端里面运行命令
- 分离到后台运行: Ctrl + B 然后按 D
- 重新连接
列出所有会话
删除会话:在窗口里Ctrl+B, 然后按Shift+6。 或者在外部tmux kill-session -t <session_name>
设置默认终端为zsh:
- 先获取路径
which zsh nano ~/.tmux.conf, 添加这一行
然后重新开一个tmux会话,旧的会话不会改变
下面的方法已过时
建议使用tmux实现关闭终端后仍能继续运行
后台运行
nohup后台运行command
终端中运行的命令放到后台
如果已经启动了一个前台命令,可以按 Ctrl + Z 暂停它,然后将它移到后台并继续运行:
后台指令放到终端
首先使用 jobs 命令查看 当前终端 所有的后台任务,例如:
输出类似这样:
然后使用 fg 命令将你需要的任务调至前台,例如将第二个任务调至前台:
ps
查找名为abcd的进程
kill
常用的选项有:
- SIGSTOP(19) 暂停进程
- SIGCONT(18) 继续执行被暂停的进程
- SIGKILL(9) 强制终止进程,不能被捕捉、阻塞、忽略
查看端口占用
文件系统
cp和rm处理文件夹的时候要加-r
文件结构
根目录/ 用户目录/home/username
- /etc: 配置文件
- /bin: 实际上是指向/usr/bin的软链接
- /etc 配置文件
- /opt 大型的商业软件(有自己的安装程序)
- /usr 大部分软件安装的地方
- /usr/local 用户自行安装软件(不通过apt)
文件权限
ls -l
文件类型(一位)、文件所属用户的权限(三位)、文件所属用户组的权限(三位)、其他人的权限(三位)。对于每个权限,第一位 r 代表读取 (Read),第二位 w 代表写入 (Write),第三位 x 代表执行 (Execute),- 代表没有对应的权限
目录权限: 可以把目录视为一个「文件」来看待,这个文件包含了目录中下一层的文件列表——「读取」对应读取文件列表的权限,「写入」对应修改文件列表(添加、删除、重命名文件)的权限,「执行」对应实际去访问列表中文件、以及使用 cd 切换当前目录到此目录的权限。
查看目录
ls -a查看隐藏文件:以“.”开头的文件或目录默认被视为隐藏文件或目录,通常是一些系统配置文件。ls -l查看文件和目录的详细信息,包括文件权限,文件数量,文件所有者,文件大小(以字节为单位),和最近修改的时间。如果想以更易读的方式查看文件大小(例如KB,MB等),可以使用ls -lhdu -sh dir查看目录总大小(ls只能看文件)。du -sh dir/*查看目录下所有子目录大小
解压文件
# .tar.gz 和 .tgz
tar -zcvf FileName.tar.gz DirName # 将DirName和其下所有文件(夹)压缩
tar -zxvf FileName.tar.gz # 解压
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径
#.zip
unzip file.zip
unzip file.zip -d /path/to/destination/directory/
-P password
# 参考https://blog.csdn.net/songbinxu/article/details/80435665
tar默认是单线程解压缩的,如果想要多线程,可以使用pigz这样的工具
sudo apt update
sudo apt install pigz
tar -I pigz -cf archive.tar.gz DirName
tar -I pigz -xvf archive.tar.gz
查看cpu状态
例子: 设置GPU.
CUDA_VISIBLE_DEVICES=0 python your_file.py # 指定GPU集群中第一块GPU使用,其他的屏蔽掉
CUDA_VISIBLE_DEVICES=1 #Only device 1 will be seen
CUDA_VISIBLE_DEVICES=0,1 #Devices 0 and 1 will be visible
软链接
创建:
这样在当前目录下cd data 就可以到达/mnt/d/data
用ls -l 目录名 来查看目录下是否有软链接。如果有,可以看到形如:
rsync
| 特性 | cp -r | rsync -av |
|---|---|---|
| 传输速度 | 每次都全量拷贝 | 增量传输(仅拷贝变化部分) |
| 元数据 | 默认不保留全部属性 | 完美保留权限、时间戳等 |
| 断点续传 | 不支持 | 支持 |
| 网络传输 | 仅限本地 | 支持本地与远程 |
rsync -av --progress <source> <destination>
rsync -azvh --progress <source> <destination>
rsync -avz -e ssh ./local_dir user@remote_ip:/remote_dir
-a(archive): 归档模式,保留权限、所有者、时间戳及软链接。-z(compress): 传输时压缩数据,适合远程传输。-v(verbose): 输出详细过程。-h(human-readable): 以易读格式显示文件大小(如 K, M, G)。--progress: 显示传输进度条。
核心注意点:斜杠 /
这是 rsync 最容易出错的地方:
-
源路径末尾有
/:仅同步目录下的内容。- 例:
rsync -a src/ dst/-> 把 src 里的东西拷贝到 dst。
- 例:
-
源路径末尾无
/:同步目录本身。- 例:
rsync -a src dst/-> 在 dst 下创建一个 src 文件夹。
- 例:
常用高级选项
- --delete: 慎用! 如果源端删除了某个文件,目标端也同步删除。使目标端成为源端的完全镜像。
-
--exclude: 排除不需要同步的文件。
- 例:
--exclude=".git"或--exclude="node_modules"。
- 例:
-
-e ssh: 通过 SSH 进行远程同步。
- --remove-source-files:
rsync在文件传输并校验成功后,从 发送端 删除这些已传输的文件。只删除文件,保留原有目录结构
用户管理
-
添加名为
newuser的用户`sudo adduser <用户名>,然后填写信息
-
给用户添加sudo 权限`sudo usermod -aG sudo <用户名>
切换用户 su <用户名>
如果该用户还没有密码,或者你想修改他的密码,可以使用 passwd 命令(你需要有 root 权限或原本就是 sudo 用户):
执行后,系统会提示你连续输入两次新密码。这个密码就是他以后执行 sudo 命令时需要输入的密码。
网络
wget
- 如果网址里面含有&,+等特殊字符,把网址用""括起来
-O选项(大写字母!!! )用于指定下载内容的输出文件。 示例:
- -o 选项(小写)则用于将 wget 的日志消息输出到指定的文件中。它不会影响下载的文件内容,只会指定日志的存放位置。
google drive
建议使用第三方软件在命令行里下载google drive上的文件,如gdown或者gshell
-O指定下载路径 如果是文件夹,用--folder
Huggingface
hfd 是本站开发的 huggingface 专用下载工具,基于成熟工具 aria2,可以做到稳定高速下载不断线。
1. 下载hfd
2. 设置环境变量
Linux
Windows Powershell
3.1 下载模型
3.2 下载数据集
ssh
配置ssh
在远程服务器上:
在本地,编写~/.ssh/config文件,添加如下内容:
Host server_name #自定义名称,也可以是ip地址
HostName hostname #远程服务器的ip地址
User username #远程服务器的用户名
IdentityFile ~/.ssh/id_rsa #本地私钥文件,默认为~/.ssh/id_rsa,如果有多个私钥文件,可以指定
Port xxxx #远程服务器的端口号,默认22
sudo chown -R ypy:ypy /home/ypy/.ssh && sudo chown -R ypy:ypy /home/ypy/.ssh/authorized_keys
sudo chmod 700 /home/ypy/.ssh && sudo chmod 600 /home/ypy/.ssh/authorized_keys
登录
清除指纹: 如果远程服务器重装系统之后,遇到登陆失败,可能是服务器指纹改变。此时需要清除本机~/.ssh/knownhosts里面的服务器指纹
如果报known_hosts格式错误:
可能是手动改的时候出了问题。(比如:不小心加了空行,known_hosts里面不能有任何空行)。用文本编辑器把出问题行改掉即可。scp
sftp
上传文件: 把本地服务器的/www/wwwroot目录下面的study.log文件上传到远程服务器的/www/server目录下。
sftp> lcd /www/wwwroot
sftp> put study.log /www/server
上传文件夹:把本地服务器的/www/wwwroot目录下面的test文件夹上传到远程服务器的/www/server目录下。
sftp> put -r test /www/server
查看远程服务器/www/server目录下面的文件和文件夹
sftp> ls /www/server
ssh问题排查
服务端查看日志(有具体拒绝原因):
echo $pwd 查看当前所在目录(适合oh-my-zsh之类的把路径压缩了) nproc 查看cpu物理核心数
GPU显存占用但nvidia-smi不显示进程号, nvtop出现N/A_nvidia-smi怎么看进程-CSDN博客