【Linux】
Linux零基础入门
- 列出文件/文件夹
- 新建/切换路径
- 查看当前路径
- 重命名或者移动文件夹
- 拷贝文件/文件夹
- 删除文件夹
- 设置环境变量
- 编辑文本文件
- 压缩和解压
- 查看cpu的信息
- 查看/杀死进程
- 查看进程的CPU和内存占用
- 重定向日志¶
- 场景一
- 场景二
- 场景三
- 场景四
列出文件/文件夹
命令:Ls(List)
user@host:/tmp/test_dir# ls # 列出当前目录下的文件和文件夹
a.txt b
user@host:/tmp/test_dir# ls -l # 列出文件和文件夹的详细信息:权限,Owner,Group和创建/更新时间
total 4
-rw-rw-r-- 1 root root 0 11月 9 10:50 a.txt
drwxrwxr-x 2 root root 4096 11月 9 10:50 b
新建/切换路径
新建命令:mkdir(make directory)
切换命令:cd(change working directory)
user@host:/tmp# mkdir test_dir # 新建一个叫test_dir的路径
user@host:/tmp# cd test_dir/ # 进入 test_dir 路径
user@host:/tmp/test_dir#
两种特殊的目录:…、. 或写作 …/、./,…/代表上一级目录,./代表当前目录。
user@host:/tmp/test_dir# cd ../test_dir/ # 上一级目录下有test_dir目录
user@host:/tmp#
查看当前路径
命令:pwd(list)
user@host:~# pwd
/root/
user@host:~#
重命名或者移动文件夹
命令: mv (move)
user@host:/tmp# mv test_dir/ test_directory # 将test_dir目录重命名为test_directory,文件重命名同样适用
user@host:/tmp# cd test_directory/
daiauser@hostb@seeta:/tmp/test_directory#
user@host:/tmp/test_directory# mkdir a b # 创建两个文件夹a和b
user@host:/tmp/test_directory# ls
a b
user@host:/tmp/test_directory# mv a b/ # 将a移动到b目录下。如果b目录不存在的话,这条命令相当于将a重命名为b
user@host:/tmp/test_directory# tree
.
└── b└── a
拷贝文件/文件夹
命令:cp (copy)
参数:-r (-r代表递归)
user@host:/tmp/test_directory# mkdir a b # 创建两个文件夹a和b
user@host:/tmp/test_directory# ls
a b
user@host:/tmp/test_directory# cp -r a b # 将a文件夹拷贝到b文件夹下,-r代表递归拷贝
user@host:/tmp/test_directory# tree
.
└── a
└── b└── a
删除文件夹
命令: rm (remove)
参数: -rf (-r代表递归,-f代表强制)
user@host:/tmp/test_directory# ls
a.txt folder
user@host:/tmp/test_directory# rm -rf folder
user@host:/tmp/test_directory# rm -rf folder/* # *是通配符号,这样代表folder文件夹下所有文件/文件夹
设置环境变量
命令:export
以常见的两个环境变量:PATH和LD_LIBRARY_PATH为例
1. PATH
如果你有自己安装的命令,希望暴露出来直接使用。比如miniconda中的python,如果不加环境变量一般需要写完整的路径:/x/x/x/miniconda3/bin/python,如果希望直接写python就能用到调用conda中的python指令,那么可以:
export PATH=/x/x/x/miniconda3/bin:$PATH
先解释上述命令的格式,右侧的路径可以写多个,以:分隔,$PATH表示求PATH变量的值,因为PATH环境变量以前可能已经有值,需要保留那些值不影响其他命令的使用,其次当输入了python命令时,会从PATH变量的路径下去找python可执行文件,先找到哪个就用哪个,因此:前后路径的先后顺序也很重要。
2. LD_LIBRARY_PATH
和PATH路径一样,只不过LD_LIBRARY_PATH是设置动态链接库的搜索路径。比如安装了CUDA以后,一般需要设置:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH如果要查看是否设置成功可以使用命令:env | grep PATH 进行确认
编辑文本文件
命令:vim
vim的高级使用较复杂,请参考其他文档学习
压缩和解压
命令:zip、unzip、tar
zip和unzip分别正对与zip的压缩包压缩和解压,tar是Linux另外一种更通用的压缩解压工具
# zip和unzip。如果没有zip请使用apt-get update && apt-get install -y zip安装
user@host:/tmp/$ zip -r dir.zip test_directory/ # 将test_directory文件夹压缩为dir.zip文件
user@host:/tmp/$ unzip dir.zip # 将dir.zip文件解压# tar. 以下参数c代表压缩,x表示解压,z代表压缩/解压为gz格式的压缩包
user@host:/tmp/$ tar czf dir.tar.gz test_directory/ # 将test_directory文件夹压缩为dir.tar.gz文件
user@host:/tmp/$ tar xzf dir.tar.gz # 将dir.tar.gz文件解压# tar还可以用于压缩和解压其他格式的压缩文件,比如bz2
user@host:/tmp/$ tar cjf dir.tar.bz2 test_directory/ # 将test_directory文件夹压缩为dir.tar.bz2文件
user@host:/tmp/$ tar xjf dir.tar.bz2 # 将dir.tar.bz2文件解压
查看cpu的信息
命令:nvidia-smi
user@host:/tmp/test_directory# nvidia-smi
Mon Nov 8 11:55:26 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN X (Pascal) Off | 00000000:01:00.0 On | N/A |
| 31% 57C P0 66W / 250W | 408MiB / 12194MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
| 1 TITAN X (Pascal) Off | 00000000:04:00.0 Off | N/A |
| 93% 27C P8 11W / 250W | 2MiB / 12196MiB | 0% Default |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1450 G /usr/lib/xorg/Xorg 32MiB |
| 0 2804 G /usr/lib/xorg/Xorg 351MiB |
+-----------------------------------------------------------------------------+
如果需要不停的输出GPU占用信息,那么使用nvidia-smi -l 1每隔1秒输出一次,或使用watch -n 1 nvidia-smi也是同样的效果
查看/杀死进程
查看进程的命令:ps
杀死进程的命令:kill
root@container-5e3e11aeb4-948a17b1:~# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:04 ? 00:00:00 bash /init/boot/boot.sh
root 58 48 8 14:04 ? 00:00:03 /root/miniconda3/bin/python /root/miniconda3/bin/jupyter-lab --allow-root
root 60 48 0 14:04 ? 00:00:00 /usr/sbin/sshd -D
root 61 48 10 14:04 ? 00:00:04 /root/miniconda3/bin/python /root/miniconda3/bin/tensorboard --host 0.0.0.0 --port 6006 --logdir /root/tf-logs
root 146 61 0 14:04 ? 00:00:00 /root/miniconda3/lib/python3.8/site-packages/tensorboard_data_server/bin/server --logdir=/root/tf-logs
root 402 338 99 14:05 pts/0 00:00:06 python tensorflow2.x-test.py
从ps的输出结果中根据执行的命令名称找到要杀死的进程,比如最后python tensorflow2.x-test.py命令执行的进程ID是402,因此可以:
root@container-5e3e11aeb4-948a17b1:~# kill -9 402
root@container-5e3e11aeb4-948a17b1:~#
kill后可以再次使用ps -ef确认进程是否已经结束。
查看进程的CPU和内存占用
命令:top
或者使用平台提供的实例监控的功能查看更为方便
Tasks: 11 total, 2 running, 9 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 1.3 sy, 0.0 ni, 96.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 52801571+total, 45453059+free, 7807904 used, 65677196 buff/cache
KiB Swap: 2074620 total, 2074620 free, 0 used. 51678192+avail Mem PID user@host PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2316 root 20 0 21.846g 1.796g 244664 R 101.4 0.4 0:05.56 python 58 root 20 0 372352 84804 15540 S 1.4 0.0 0:05.40 jupyter-lab 59 root 20 0 713796 11288 7668 S 1.4 0.0 0:01.31 proxy 2395 root 20 0 45920 3940 3444 R 1.4 0.0 0:00.01 top 1 root 20 0 25368 3724 3404 S 0.0 0.0 0:00.07 bash 48 root 20 0 55060 24328 9728 S 0.0 0.0 0:00.33 supervisord 60 root 20 0 72304 5872 5140 S 0.0 0.0 0:00.01 sshd 61 root 20 0 9756148 315032 156124 S 0.0 0.1 0:04.16 tensorboard 146 root 20 0 1582996 6964 5296 S 0.0 0.0 0:00.04 server 338 root 20 0 25824 4312 3800 S 0.0 0.0 0:00.18 bash 481 root 20 0 25824 4544 4040 S 0.0 0.0 0:00.18 bash
如果有高负载(CPU使用率高)的情况,那么一般进程都会排在最上边,根据进程名称可以进行确认。那么这个进程占用的CPU可以通过%CPU字段读取出来,内存更复杂一些,但是一般看RES字段就够了。比如上边第一个Python进程CPU的占用率是101.4%,内存使用大小是1.796g(Tips:如果内存显示的单位和上述不同,按e键切换)
重定向日志¶
命令: >
user@host:/tmp# python train.py # 一般情况下日志会输出到stdout/stderr中
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...user@host:/tmp# python train.py > ./train.log 2>&1 # 把stdout/stderr中的日志重定向到train.log文件中,最后的2>&1中,2代表stderr, 1代表stdout,&1可以理解成像c语言中的求地址user@host:/tmp# cat ./train.log # 将train.log文件中的内容打印在stdout。cat(Concatenate FILE(s) to standard output.)
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...user@host:/tmp$ python train.py > ./train.log 2>&1 & # 如果最后再加一个&的效果是后台运行,还可以参考nohup的配合使用
场景一
一般这种情况是进程假死,看上去停止了但是实际还在。可以通过ps -ef查看进程是否还存在,如果存在则用kill命令杀死进程,最后用nvidia-smi检查显存是否已经释放。
场景二
场景:想把实例中的模型/数据保存在网盘中一份,方便其他实例使用
user@host:~# pwd
/root/
user@host:~# ls
train.py autodl-tmp autodl-nas
user@host:~# cp -r train.py autodl-nas/ # 把 train.py 文件存入网盘中
场景三
场景:发现进程内存会使用超过限制,导致进程被Killed
可以使用Top命令查看进程的占用内存情况,确认内存是不是会停留在一个值而不会一直增长,如果一直增长说明程序对内存的释放有漏洞,可以分析Python代码变量的引用来进行优化。
场景四
场景:使用JupyerLab的终端挂守护进程跑训练,担心关闭网页期间的日志看不到了
可以使用重定向日志功能,把日志写入文件
相关文章:

【Linux】
Linux零基础入门 列出文件/文件夹新建/切换路径查看当前路径重命名或者移动文件夹拷贝文件/文件夹删除文件夹设置环境变量编辑文本文件压缩和解压查看cpu的信息查看/杀死进程查看进程的CPU和内存占用重定向日志场景一场景二场景三场景四 列出文件/文件夹 命令:Ls(L…...

「 网络安全常用术语解读 」网络攻击者的战术、技术和常识知识库ATTCK详解
引言:随着网络攻击手段的不断升级和多样化,网络安全领域面临着越来越严峻的挑战。为了帮助网络安全专业人员更好地识别和防御网络攻击,MITRE公司创建了ATT&CK框架,以提供一个统一且结构化的方法来描述网络攻击者的行为和技巧。…...
Java.lang.Integer类详解
Java.lang.Integer类详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在今天的文章中,我们将深度解析Java中的一个重要类——java.lang.Integer&…...

GitFlow工作流
基于 Git 这一版本控制系统,通过定义不同的分支,探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如:在开发阶段,创建 feature 分支,完成需求后,将此分支合并到 develop 分支上;在发…...
GitHub Copilot 与 OpenAI ChatGPT 的区别及应用领域比较
GitHub Copilot 和 OpenAI ChatGPT 都是近年来颇受关注的人工智能项目,它们在不同领域中的应用继续引发热议。本文旨在分析和比较这两个项目的区别,从技术原理、应用场景、能力和限制、输出结果、能力与限制和发展前景等方面进行综合评估,帮助…...

【C++】类和对象(上篇)
文章目录 🛟一、面向过程和面向对象初步认识🛟二、类的引入🛟三、类的定义📝1、类的两种定义方式📝2、成员变量命名规则的建议 🛟四、类的访问限定符及封装🍩1、访问限定符🍩2、封装…...

甜蜜而简洁——深入了解Pytest插件pytest-sugar
在日常的软件开发中,测试是确保代码质量的关键步骤之一。然而,对于测试报告的生成和测试结果的可读性,一直以来都是开发者关注的焦点。Pytest插件 pytest-sugar 以其清晰而美观的输出,为我们提供了一种愉悦的测试体验。本文将深入介绍 pytest-sugar 插件的基本用法和实际案…...

SpringBoot3整合OpenAPI3(Swagger3)
文章目录 一、引入依赖二、使用1. OpenAPIDefinition Info2. Tag3. Operation4. Parameter5. Schema6. ApiResponse swagger2更新到3后,再使用方法上发生了很大的变化,名称也变为OpenAPI3。 官方文档 一、引入依赖 <dependency><groupId>…...
2023美赛各题分析,2024美赛数学建模思路解析2.2日第一时间更新
目录 2024美赛数学建模各题思路模型代码:开赛后第一时间更新,更新见文末 一、2023题目重述 拟解决的问题 我们的工作: 二、模型和计算 1.数据预处理 2.报告数量区间预测模型 3.猜词结果分布预测模型 2024美赛数学建模交流࿰…...

分享一个学习git的网站
Learn Git Branching...
用户拉新的4大关键策略,照着做就对了!
今天给大家分享用户拉新的4个关键策略,掌握了这些策略,不仅有助于增加用户数量,还能让对方成为你忠实的粉丝。 1、制定明确的目标:在开始拉新之前,你需要明确自己的目标。你想要吸引什么样的用户?你希望他…...

如何用“VMware安装Ubuntu”win11系统?
一、 下载Ubuntu 企业开源和 Linux |Ubuntu的 二、 安装 三、 启动虚拟机 选中Try or Install Ubuntu Server,按回车...
ZJOI2009 对称的正方形
P2601 [ZJOI2009] 对称的正方形 题目大意 给定一个 n m n\times m nm的矩阵,求这个矩阵中满足上下对称且左右对称的正方形子矩阵的个数。 1 ≤ n , m ≤ 1000 1\leq n,m\leq 1000 1≤n,m≤1000 题解 首先,我们对原矩阵、左右翻转后的矩阵、上下翻转后…...

大模型学习与实践笔记(十一)
一、使用OpenCompass 对模型进行测评 1.环境安装: git clone https://github.com/open-compass/opencompass cd opencompass pip install -e . 当github超时无法访问时,可以在原命令基础上加上地址: https://mirror.ghproxy.com git clon…...

Elasticsearch+Kibana 学习记录
文章目录 安装Elasticsearch 安装Kibana 安装 Rest风格API操作索引基本概念示例创建索引查看索引删除索引映射配置(不配置好像也行、智能判断)新增数据随机生成ID自定义ID 修改数据删除数据 查询基本查询查询所有(match_all)匹配查…...

Cesium叠加超图二维服务、三维场景模型
前言 Cesium作为开源的库要加超图的服务则需要适配层去桥接超图与Cesium的数据格式。这个工作iClient系列已经做好,相比用过超图二维的道友们可以理解:要用Openlayer加载超图二维,那就用iClient for Openlayer库去加载;同样的要用…...
【低危】OpenSSL 拒绝服务漏洞
漏洞描述 OpenSSL 是广泛使用的开源加密库。 在 OpenSSL 3.0.0 到 3.0.12, 3.1.0 到 3.1.4 和 3.2.0 中 ,使用函数 EVP_PKEY_public_check() 来检查 RSA 公钥的应用程序可能会遇到长时间延迟。如果检查的密钥是从不可信任的来源获取的,这可能会导致拒绝…...
TDL-Tiny Synopsis-TED-ED 网络理论 Network Theory
Tiny Synopsis on TED-ED-Network Theory I) Webpage addressII)Context ExceptionIII) Diagram/Chart Research&Developement I) Webpage address URL Resource II)Context Exception what does “going viral” on Internet really mean? (网络…...

GIS项目实战08:JetBrains IntelliJ IDEA 2022 激活
为什么选择 IntelliJ IDEA 使用编码辅助功能更快地编写高质量代码,这些功能可在您键入时搜索可能的错误并提供改进建议,同时无缝地向您介绍编码、新语言功能等方面的社区最佳实践。 IntelliJ IDEA 了解您的代码,并利用这些知识通过在每种上…...

Linux 命令大全 CentOS常用运维命令
文章目录 1、Linux 目录结构2、解释目录3、命令详解3.1、shutdown命令3.1、文件目录管理命令ls 命令cd 命令pwd 命令tree 命令mkdir 命令touch 命令cat 命令cp 命令more 命令less 命令head 命令mv 命令rm 命令ln 命令tail 命令cut命令 3.2、用户管理useradd/userdel 命令用户的…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...