admin 管理员组文章数量: 887006
文章目录
- 前言
- 1. 终极命令
- 2. 基础命令
- 2.1 C系
- 2.2 E系
- 2.3 F系
- 2.4 K系
- 2.5 L系
- 2.6 M系
- 2.7 N系
- 2.8 P系
- 2.9 R系
- 2.10 T系
- 2.11 W系
- 3. 文件与文档
- 4. 压缩与解压
- 5. 系统设置与管理
- 6. 命令组合
- 补充:bash脚本
- 结束语
前言
本篇文章主要汇总了项目开发过程中常用的linux
命令,以便后续查询。
1. 终极命令
man
为用户查询指令的使用手册。
# 查询指令ls
man ls
为便于查询man
输出的指令手册,下面给出一些快捷键:
按键 | 功能 |
---|---|
Space | 下一页 |
Enter | 下一行 |
PgUp | 下一页 |
PgDn | 上一页 |
Home | 跳转到手册开头 |
End | 跳转到手册末尾 |
^ | 下一行 |
v | 上一行 |
/ | 从上到下搜索手册中某个关键词,比如/is 就是在手册中搜索关键词is |
? | 从下到上搜索手册中某个关键词,?is |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出手册 |
2. 基础命令
2.1 C系
cat
在终端设备上输出文件的内容
# 输出main.py文件中的内容
cat main.py
cd
切换目录
# 切换到Documents目录
cd Documents/
cp
复制文件
# 复制文件main.py到Documents目录中
cp main.py Documents/
# 复制文件main.py到Documents目录中,并重命名为xiayouran.py
cp main.py Documents/xiayouran.py
# 复制Documents目录中所有的文件到Downloads目录中
cp Documents/* Downloads/
# 复制pywork文件夹及其所有的文件到Documents目录中
cp -r pywork/ Documents/
-f # 若目标文件已存在, 则会直接覆盖原文件
-i # 若目标文件已存在, 则会询问是否覆盖
-r # 递归复制文件和目录
-v # 详细显示命令执行的操作
2.2 E系
echo
在终端设备上输出字符串或变量的值
# 输出字符串
echo "hello world!"
# 输出变量PATH的值
echo $PATH
2.3 F系
find
查找文件
# 在pywork目录下搜索所有以.py为后缀名的文件
find /pywork -name "*.py"
2.4 K系
kill
终止某个指定PID
的服务进程
# 终止PID为32519的进程
kill 32519
# 若上述指令无效, 可使用最高级别地指令强制杀死进程
kill -9 32519
2.5 L系
ls
列出目前工作目录所含之文件及子目录
# 列出当前目录下的所有子目录即文件名
ls
# 详细列出文件名称、文件类型、权限、拥有者、文件大小等信息
ls -l file.txt
-a # 显示所有文件及目录(包括以.为开头的隐藏文件)
-r # 将文件以相反次序显示(原定依英文字母次序)
-t # 将文件依建立时间之先后次序列出
-A # 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
ls
命令列出的信息中,开头为d
的表示文件夹,开头为-
的表示文件。
lscpu
查看本机CPU
信息。
2.6 M系
mkdir
创建文件夹
# 创建名为pywork的文件夹
mkdir pywork
# 创建多级目录
mkdir -p pywork/work1
more
在终端设备上输出文件的内容
# 输出main.py文件中的内容, 若内容过多, 会自动进行分屏展示
more main.py
# 为了方便查看文件内容, 一般根据文件内容量来选择合适的指令
# 如果内容较少, 可使用cat; 如果内容较多, 可使用more
mv
移动文件或重命名
# 移动文件到pywork文件夹
mv mian.py pywork/
# 重命名mian.py为test.py
mv mian.py test.py
-i # 若存在同名文件, 则向用户询问是否覆盖
-f # 覆盖已有文件时, 不进行任何提示
2.7 N系
nvidia-smi
查看GPU
的使用情况
# 查看服务器上的GPU信息
nvidia-smi
#
NVIDIA-SMI 418.67
Driver Version: 418.67 # 显卡驱动版本
CUDA Version: 10.1 # CUDA版本
GPU # 服务器上GPU编号(从0开始编号) 0
NAME # GPU类型 Tesla V100-SXM2-32GB
Persistence-M # 持久模式 On 打开 Off 关闭
FAN # 风扇的转速(0%-100%) N/A表示没有风扇
Temp # GPU的温度 54C(摄氏度)
Perf # GPU的性能状态, 从P0到P12 P0(性能最大)
Pwr:Usage/Cap # 能耗, 212W / 300W
Bus-Id # GPU总线相关显示 00000000:06:00.0
Disp.A # Display Active, 表示GPU的显示是否初始化 Off
Memory-Usage # 显存使用情况 4000MiB / 16384MiB
Volatile GPU-Util # GPU使用率
Uncorr. ECC # 是否开启错误检查和纠正技术, 0 disabled 1 enabled
Compute M. # 计算模式, 0 DEFAULT 1 EXCLUSIVE_PROCESS 2 PROHIBITED
nohup
用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。no hang up!
nohup python xxx.py
这在使用ssh远程连接服务器运行代码时很实用,正常情况下我们运行代码直接是
python xxx.py
,当我们关掉终端时,该进程会被强制关掉,而使用nohup
指令,也就是nohup python xxx.py
运行时,代码会在后台运行,即关闭终端时该进程仍能正常运行。代码产生的log
会保存在当前的目录下,默认是nohup.out
文件。
2.8 P系
pwd
显示当前路径
# 显示当前路径
pwd
2.9 R系
reboot
重启系统
# 重启系统
reboot
rm
删除文件或目录
# 删除main.py文件
rm main.py
# 删除pywork文件夹下所有的文件及文件夹
rm -rf pywork/*
# 删除pywork文件夹及其所有的文件和文件夹
rm -rf pywork/
-i # 删除前会询问用户是否操作(默认)
-r # 递归删除
-f # 删除前不询问用户是否操作
2.10 T系
top
实时显示系统中各个进程的资源占用状况
# 查看系统各个进程的运行情况
top
大致说一下如何查看各个进程的信息:
# 系统时间, 系统已运行时间, 登陆人数, 系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)
top - 19:59:39 up 9:20, 1 user, load average: 0.07, 0.03, 0.01
# 进程总数, 运行中的进程数, 睡眠中的进程数, 停止的进程数, 僵死的进程数
Tasks: 308 total, 3 running, 305 sleeping, 0 stopped, 0 zombie
# 用户(user)占用CPU的百分比, 系统内核(system)占用CPU的百分比, 改变过优先级的进程占用CPU的百分比, 空闲CPU的百分比, IO等待占用CPU的百分比, 硬中断占用CPU的百分比, 软中断占用CPU的百分比
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
# 物理内存总量, 空闲内存量, 内存使用量, 内核缓存的内存量
# 可用内存 = free + buff/cache
MiB Mem : 1966.1 total, 102.7 free, 1254.0 used, 609.3 buff/cache
# 虚拟内存总量, 虚拟内存空闲量, 虚拟内存使用量, 已被提前加载的内存量
MiB Swap: 2048.0 total, 2047.7 free, 0.3 used. 538.9 avail Mem
# 按F键可查看具体含义
PID # Process Id 进程ID
USER # Effective Use 进程所有者
PR # Priority 进程优先级
NI # Nice Value, 负值表示高优先级, 正值表示低优先级
VIRT # Virtual Memory Usage 进程使用的虚拟内存总量, 单位kb. VIRT = SWAP + RES
RES # Resident Memory Usage 进程使用的、未被换出的物理内存大小(常驻内存), 单位kb. RES = CODE + DATA
SHR # Shared Memory 共享内存, 单位kb
S # 进程状态, D: 不可中断的睡眠状态 R: 运行 S: 睡眠 T: 跟踪/停止 Z: 僵尸进程
%CPU # 进程使用的CPU百分比
%MEM # 进程使用的物理内存百分比
TIME+ # 进程使用的CPU时间, 单位1/100s
COMMAND # 进程名称(进程运行的指令)
# 查看指定user(xiayouran)的进程信息
top -u xiayouran
2.11 W系
wget
从网络上下载文件
# 从GitHub上下载代码
wget https://github/xiayouran/Musicer.git
# 下载代码到指定目录
wget -P /home/xiayouran/pywork/ https://github/xiayouran/Musicer.git
-b # 后台下载模式
-P # 下载到指定目录
-t # 最大尝试次数
-c # 断点续传
-p # 下载页面内所有资源,包括图片、视频等
-r # 递归下载
3. 文件与文档
scp
linux
系统与linux
系统间的文件复制
# 将本地的main.py文件复制到xiayouran@192.168.3.100主机上的
scp main.py xiayouran@192.168.3.100:/home/xiayouran/pywork
# 将xiayouran@192.168.3.101主机上的pywork文件夹复制到本地
scp -r xiayouran@192.168.3.101:/home/xiayouran/pywork/ .
wc
统计并显示指定文件中的行数、字数、字节数
# 统计main.py文件中的行数、字数、字节数
wc main.py
# 统计main.py文件中的行数
wc -l main.py
# 统计main.py文件中的字数
wc -w mian.py
# 统计main.py文件中的字节数
wc -c mian.py
du
显示目录或文件的大小
# 显示当前目录下各文件夹总大小
du -sh *
# 显示pywork文件夹大小
du -sh pywork/
# 以易读方式显示文件大小(所谓易读, 就是自动以KB/MB/GB的形式显示)
du -h pywork/
# 显示pywork文件夹及所有文件的大小
du -a pywork/
# 显示当前目录下各子目录的大小
du -h --max-depth=1 .
-k # 以KB为单位显示文件大小
-m # 以MB为单位显示文件大小
-g # 以GB为单位显示文件大小
-s # 显示目录总大小
touch
创建新的空文件
# 创建file.txt文件
touch file.txt
stat
显示文件的详细信息
# 显示file.txt文件的创建时间等信息
stat file.txt
# 主要输出结果
Access time(atime): # 最后一次访问文件的时间
Modify time(mtime): # 最后一次修改文件的时间
Change time(ctime): # 最后一次对文件属性改变的时间
grep
在文件中搜索指定字符串
# 搜索data目录下所有含'haha'的文件
grep -r 'haha' data/*
# 搜索test.txt文件中'haha'所在的行及行号
grep -n 'haha' test.txt
-c # 只输出匹配行的数量
-l # 只列出符合匹配的文件名,不列出具体的匹配行
-n # 列出所有的匹配行,显示行号
-s # 不显示不存在、没有匹配文本的错误信息
-v # 显示不包含匹配文本的所有行
-w # 匹配整词
-x # 匹配整行
-r # 递归搜索
# 除此之外,prep 还可以和正则表达式一起使用
grep "^-" # 匹配所有以 - 开头的行
chmod
设置文件/文件夹权限
# 将文件夹data的权限设置为所有人都可以读、写和执行
chmod 777 data
# 对data目录下的所有文件与子目录进行相同的权限变更
chmod -R 777 data
# 在linux中将权限人分为owner、group和others
# 具体权限是r(read, 4)、w(write, 2)和x(execute, 1)
# owner/group/others三种身份各有自己的read/write/execute权限
# 7 = 4 + 2 + 1,即拥有rwx三种权限
# 777表示owner、group和others都拥有rwx三种权限
md5sum/sha1sum
文件完整性校验
md5sum xxx.txt
sha1sum xxx.txt
# windows:
certutil -hashfile xxx.txt md5
# 支持的算法有:MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
rsync
文件断点续传,适合大文件传输
rsync -avz --progress -e "ssh -p 11122 -i /drives/c/Users/liyanpeng/.ssh/id_rsa" xxx.jsonl liyanpeng@192.168.3.21:/root/data1/liyanpeng/pywork
# -a 归档模式
# -v 详细模式
# -z 压缩模式
# --progress 显示进度
# -e 指定shell
4. 压缩与解压
zip
以.zip
格式压缩文件
# 把当前目录下的data文件夹打包成data.zip
zip -r data.zip data
-q # 不显示指令执行过程
-r # 递归处理,将指定目录下的所有文件和子目录一并处理
-z # 替压缩文件加上注释
-v # 显示执行命令时详细的信息
unzip
解压.zip
格式的压缩文件
# 在当前文件夹下解压data.zip
unzip data.zip
# 将data.zip解压到当前目录下的data文件夹中
unzip data.zip -d data
# 检查data.zip是否完整
unzip -t data.zip
-l # 显示压缩文件内所包含的文件
-v # 显示执行命令时详细的信息
-n # 解压缩时不要覆盖原有的文件
-t # 校验
tar
压缩/解压.tar
和.tar.gz
格式的文件
# 解压data.tar到当前目录下
tar -xvf data.tar
# 解压data.tar到当前目录下的data文件夹
tar -xvf data.tar -C data
# 解压data.tar.gz到当前目录下的data文件夹
tar -zxvf data.tar.gz -C data
# 将data文件夹中的所有.txt文件打包到data.tar
tar -cvf data.tar data/*.txt
# 查看压缩包内容(不解压)
tar -tvf data.tar
-x # 从压缩包中提取文件
-z # 压缩/解压缩.tar.gz格式的文件
-v # 显示操作过程
-r # 添加文件到已经压缩的文件
-c # 建立新的备份文件
-t # 查看压缩包里面的文件
-C # 切换工作目录
--remove-files # 压缩之后删除源文件
5. 系统设置与管理
export
设置环境变量,用于将shell
变量输出为环境变量,或者将shell
函数输出为环境变量
# 列出当前所有的环境变量
export -p
# 或者直接不加参数
export
# 设置python的环境变量(在后面追加)
export PYTHONPATH=$PYTHONPATH:/home/xiayouran/python/
# 设置python的环境变量(在前面追加)
export PYTHONPATH=/home/xiayouran/python/:$PYTHONPATH
# 设置python的环境变量(覆盖掉以前的)
export PYTHONPATH=/home/xiayouran/python/
# 取消环境变量PYWORK
unset PYWORK
但上述的配置操作在关闭终端之后会自动失效,下面有两种方式来进行永久配置,可根据不同的工作环境进行选择使用:
# method 1: 用户级添加环境变量(只影响当前user)
# 打开.bashrc文件(在当前用户的根目录下, 直接cd就是了)
vim .bashrc
# 在最末尾添加
export PYTHONPATH=$PYTHONPATH:/home/xiayouran/python/
# 保存文件并退出, 再进行source使其生效
source .bashrc
# method 2: 系统级添加环境变量
# 打开bash.bashrc文件(不同的系统可能不大一样)
vim /etc/bash.bashrc
# 在最末尾添加
export PYTHONPATH=$PYTHONPATH:/home/xiayouran/python/
# 保存文件并退出, 再进行source使其生效
source /etc/bash.bashrc
环境变量的值以
:
进行分割
ln
为文件或目录创建链接
# -s 创建软连接(符号链接)
ln -s /home/xiayouran/pywork/data/imagenet/val /home/xiayouran/data
# 软连接就相当于是一个快捷方式, 此时的data就相当于是imagenet下的val
# 删除软连接
rm -rf /home/xiayouran/data
# 注意!!!
# 不是rm -rf /home/xiayouran/data/哦, 没有最后面的 / , 否则数据就没了哦(链接文件的同步性)
date
显示系统的时间与日期
# 查看当前系统的时间与日期
date
# 格式化显示系统的时间与日期
date "+%Y-%m-%d %H:%M:%S"
# 将系统时间设置为2021-09-03 17:30:00
date -s "2021-09-03 17:30:00"
参数 | 功能 |
---|---|
%Y | 年份 |
%m | 月份(1~12) |
%d | 本月的第几天 |
%H | 时钟(00~23) |
%I | 时钟(01~12) |
%M | 分钟(00~59) |
%S | 秒钟(00~59) |
%A | 完整的工作日名称 |
%a | 缩写的工作日名称 |
%B | 完整的月份名称 |
%b | 缩写的月份名称 |
%p | 显示AM和PM |
%q | 季度(1~4) |
%j | 今年的第几天 |
timedatectl
设置系统的时间
# 查看当前时区的时间状态
timedatectl status
# 列出所有时区
timedatectl list-timezones
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 设置系统日期
timedatectl set-time 2021-09-03
# 设置系统时间
timedatectl set-time 17:30:00
ps
查看系统中的进程状态
# 查看系统中的进程状态
ps -aux
pstree
以树状图的形式展示进程之间的关系
# 以树状图的形式展示进程之间的关系
pstree
pidof
查询某个服务进程的pid
# 查询sshd进程的pid
pidof sshd
nice
用于调整进程的优先级
# 数字越低(-20~19), 优先级越高
nice -n -20 bash
ifconfig
查看网卡配置与网络状态等信息
# 查看网卡信息
ifconfig
uname
查看系统内核版本与系统架构等信息
# 查看系统所有相关信息
uname -a
-m # 显示计算机硬件架构
-n # 显示主机名称
-r # 显示内核发行版本号
-s # 显示内核名称
-v # 显示内核版本
-p # 显示主机处理器类型
-o # 显示操作系统名称
-i # 显示硬件平台
uptime
查看系统的负载信息
# 查看系统的负载信息
uptime
free
显示系统中内存的使用信息
# 查看看=系统的内存信息
free -h
df
显示系统中磁盘的使用信息
# 查看看=系统的内存信息
df -h
Filesystem # 文件系统
Size # 分区大小
Used # 已使用容量
Avail # 还可以使用的容量
Use% # 已用百分比
Mounted on # 挂载点
who
查看当前主机的用户终端信息
# 查看当前主机的用户终端信息
who
which
在变量PATH
指定的路径中,搜索某个系统命令的位置
# 搜索python的位置·
which python
last
查看主机被访的记录
# 查看主机被访的记录
last
6. 命令组合
下面介绍通过管道符 |
进行命令组合:
# 统计当前目录下文件的个数(不包括目录)
ls -l | grep "^-" | wc -l
# 统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
# 统计当前目录下文件夹(目录)的个数(不包括子目录)
ls -l | grep "^d" | wc -l
# 统计当前目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l
有关更多更详细的指令信息可以参阅 Linux命令大全(手册)。
补充:bash脚本
# #! 表示脚本的声明,用来告诉系统使用哪种shell解释器来执行该脚本(该声明需放在第一行)
#!/bin/bash
# or in file.py
#!/usr/bin/env python3
# 意思是在 /usr/bin/env 中找到 python 的安装路径,然后去执行它
# 然后可以直接执行file.py而不必python file.py这样运行
# env 是在系统的 PATH 目录中查找解释器
#!/usr/bin/python3
# 意思是说去 /usr/bin/ 目录下找 python 去执行,没有上述方式灵活
set -ex
# set -e 当脚本中的任何一行执行失败就退出
# set -x 打印已经成功执行的脚本,每一行前面会有一个 + 号
# BASH_SOURCE[0] 等价于 BASH_SOURCE,表示取得当前执行的 shell 文件所在的路径及文件名
# dirname 表示去除文件名中的非目录部分,仅显示与目录有关的部分
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $0, $1, $2
# $0 当前脚本名称
# $1 输入的第一个参数
# 条件判断,注意[]里两端各有一个空格
# 其中添加了 x 是防止输入参数为空
if [ x$1 == x ]; then
echo "Error: $0 model_name"
# exit 0 代表正常运行程序并退出程序
# exit 1 代表非正常运行导致退出程序
# 用户可以 echo $? 来查看是 0 还是 1, 从而达到检测程序是正常结束退出还是产生错误而退出的目的
exit 1
fi
if [ -f $model_path ]; then
echo $model_path
elif [ -f $model_path2 ]; then
echo $model_path2
else
echo "Error: can't find model file for ${model_name}"
exit 1
fi
# == 比较字符串内容是否相同
# != 比较字符串内容是否不同
# -z 判断字符串内容是否为空
# -d 测试文件是否为目录类型
# -e 测试文件是否存在
# -f 判断是否为一般文件
# -r 测试当前用户是否有权限读取
# -w 测试当前用户是否有权限写入
# -x 测试当前用户是否有权限执行
# -eq 是否等于
# -ne 是否不等于
# -gt 是否大于
# -lt 是否小于
# -le 是否等于或小于
# -ge 是否大于或等于
# @ 将所有命令行参数做为一个字符串数组,每个参数为一个成员变量,存入此变量
for net in ${model_list_all[@]}
do
echo "======= $net ====="
done
结束语
版权声明:本文标题:Linux常用命令汇总 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1733260862h1567876.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论