本文最后更新于:2024年9月8日 下午
Linux基础学习笔记(随缘会更新)
记录一些基本的能用上的命令。之后假如遇到了什么新的命令会在这更新。
第一次更新:用学校科研平台的时候发现查看资源的几个命令能用上
第二次更新:更新了一些超常用的命令速查
第三次更新:新增了一下命令
第四次更新:新增了scp相关命令
第五次更新:增加了虚拟环境相关命令和少量常用命令
超常用命令速查!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ls -alh ll tar -cvf xxx.tar ./data1/ ./data2/ tar -czvf xxx.tar.gz ./data1/ ./data2/ tar -xvf xxx.tar -C ./data/ tar -xzvf xxx.tar -C ./data/ du -h /data/ df -h find /var/log / -type f -print | wc -l ls -l /path/to/directory | grep -v '^d' | wc -l ps aux | grep xxx
特殊符号
|:管道,上一条命令的输出作为下一条命令的参数
&:任务后台执行redis-server &
nohup:nohup command > /path/to/log.log 2>&1 & 后台执行命令,并将输出写到log中
&&:前一条命令成功时执行后一条命令
||:前一条命令失败时执行下一条命令
文件与目录管理
ls : list,列出目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ls -a # all 全部的文件,包括隐藏文件 -l # long 详细信息 -h # 配合-l以人性化的方式显示文件大小 -i # 显示inode信息# ls -lha # 结合三个标签的效果,可以乱序# * # 任意个数字符 ? # 任意一个字符,不能多也不能少 [] # 匹配字符组中任意一个,比如下列 [abc] # 匹配abc中任意一个 [a-f] # 匹配a到f内任意一个 [1-9] # 匹配1到9内任意一个
cd: change dir,改变工作目录
1 2 3 4 5 6 7 8 9 10 cd# # cd ~ # 当前用户主目录 cd . # 当前目录 cd .. # 上级目录 cd - # 最近两次工作目录间切换# cd /home/tmp # 绝对路径,最前面是~或者/ cd file/src # 相对路径,表示当前目录下的文件
mkdir: make dir, 创建新目录
1 2 mkdir [目录名字] -p # 可以递归创建目录
rmdir: remove dir,删除空目录
1 2 rmdir [目录名字] -P # 删除指定空目录,假如上一级也是空那也删除
rm: remove, 删除文件或目录
1 2 3 4 rm [文件名] -f # 强制删除,忽略不存在的文件 -r # 删除目录 -i # 会询问一次
pwd: print working dir,显示目前所在目录
1 2 pwd -P # 显示出真实路径而非link路径
cp: copy,复制文件
1 2 3 4 5 6 7 8 cp [参数] [来源] [目标] -d # 若复制的文件是link,则复制link而非文件本身 -p # 复制文件的属性,备份常用 -r # 递归复制,能复制目录 -a # -pdr -f # force,若目标已存在且无法开启,则删除后再试一次 -i # 若目标已存在,会先询问再覆盖
mv: move,移动文件或修改名称
1 2 3 4 5 mv [参数] [来源] [目标] -f # force,若目标已存在且无法开启,则删除后再试一次 -i # 若目标已存在,会先询问再覆盖 -u # 若目标文件已存在,且来源更新,才会覆盖 mv file file2 # 重命名操作
ln: 链接
硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号 ,称为索引节点号(Inode Index) 。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。**只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。**也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
不允许给目录创建硬链接
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接 。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项) 。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
如图,最左边一栏就是inode,a-hard是硬链接,a-light是软连接。
1 2 3 4 5 6 7 ln [参数] [来源] [目标]# -b # 覆盖以前建立的连接 -f # 强制执行 -i # 存在会询问一次 -s # 软连接 -v # 显示过程
cat: category,由第一行开始显示文件内容
1 2 3 4 5 6 7 8 cat [参数] [目标] -E # 将结尾的断行字节用$表示 -v # 列出看不出来的特殊字符 -T # 列出tab键为^| -A # -vET -b # 列出行号,空白行不计 -n # 列出行号,空白行计
tac: 倒过来的cat,从最后一行开始显示文件内容
nl: 显示行号
1 2 3 4 nl [参数] [文件] -b a # 计空行 -b t # 不计空行 默认 -w [数字] # 行号栏所占位数
more: 一页一页翻动
1 2 3 4 5 space # 向下翻一页 enter # 向下一行 /[字符] # 向下搜索字符 q # 离开 b # 回翻页
head/tail: 前/后几行
1 2 head -n [数字] [目标] tail -n [数字] [目标]
grep命令
用于查找文件里符合条件的字符串
1 2 3 4 5 grep [被查找字符串] [文件名] grep -e [被查找正则] [文件名]
查看系统相关信息
CPU使用信息
GPU使用信息
跑深度学习模型的时候常用
1 nvidia-smi # 查看显存、GPU使用率等
此外,可以pip install gpu-stat这个工具
ps命令
ps是Process Status缩写,用来列出系统进程。linux进程有这几种状态:运行R 、停止T 、睡眠S (Interruptible sleep)、不可中断睡眠D ( Uninterruptible sleep,通常是IO )、僵尸Z 。
其中,睡眠状态指的是进程在等待某些事件或外部中断发生;不可中断睡眠指的是进程不接受外来信号中断,这个过程比较短暂;僵尸状态指的是进程在退出过程中,系统回收所有资源,但留下了进程的描述符,它的父进程可能会用到。
1 2 3 4 5 6 7 8 9 10 ps -A ps -u ubuntu ps -aux/-au > USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND > 用户 进程ID CPU占用 内存占用 一些奇怪的东西 进程状态码 开始时间 消耗的CPU时间 启动命令 ps -aux|grep nginx
linux进程
主进程:程序执行入口
父进程:任何进程都有父进程,是子进程的创造者,可以有多个子进程但只能有一个父进程
子进程:父进程创建的进程
守护进程(daemon):子进程的一种状态,标识子进程与父进程同死。如果没有标记,则杀死父进程对子进程没有影响。
systemctl、service命令
systemctl用来管理linux系统上运行的服务
1 2 3 4 5 6 7 systemctl [命令] [unit] systemctl start nginx systemctl stop nginx systemctl restart nginx systemctl status nginx systemctl reload nginx
service命令可以查看系统中的服务
远程命令
SCP文件传输命令
scp即secure copy,类似cp指令,可以在本地和远程之间进行文件传输。
命令格式:scp [源文件地址] [目标地址]
当地址为远程时,使用这种格式:<用户名>@<IP>:<路径>,比如root@192.168.23.4:/home/test.txt。
额外可以添加-r参数来复制目录。
1 2 3 4 5 scp -r ./work kamino@123.123.44.44:/home/kamino scp kamino@123.123.44.44:/home/kamino/result.tar.gz .
虚拟Python环境相关命令
pip相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 pip freeze > requirements.txt pip list --format=freeze > requirements.txt pip install pipreqs pipreqs <路径> --encoding=utf-8 pip install -r requirements.txt pip install <包名或者含有setup.py的路径> pip install -e <路径> pip install git+https://github.com/openai/CLIP.git
conda相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 conda env export > environment.yml conda env create -f environment.yml conda env create \ -n <环境名字> -p <环境路径> python=3.10 pip install conda-pack conda pack -n/-p <环境名/路径> -o <导出路径.tar.gz> tar -xzvf xxx.tar.gz conda activate <环境名字或者环境路径>