【Terminal】终端常用命令
Linux
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。Linux系统性能稳定,是整体开源的软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。
在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,它还被当作服务器,甚至当作网络防火墙,这是Linux的一大亮点。
---升阶命令
---scp
Linux scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。【scp [可选参数] file_source file_target】
参考:
Linux scp命令 | 菜鸟教程 (runoob.com)
用winscp从本地上传文件到服务器上出现复制文件到远端时错误 - Will-Zhong - 博客园 (cnblogs.com)
---wget
参考:wget命令详解
wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件。
wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
批量下载参考:wget 批量下载文件 【将下载链接都写入urls.txt,然后wget -i urls.txt即可】
---服务器
ps (英文全拼:process status)命令用于显示当前进程(当前状态处于running)的状态,类似于 windows 的任务管理器。-aux 显示所有包含其他使用者的进程。
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
【ps -aux | grep python】 Linux下查看所有python进程。
Linux 程序异常诊断工具(pstack与strace命令使用详解、死锁)_rt_sigprocmask(sig_block, [chld], ~[kill stop rtmi-CSDN博客
【Linux】程序卡死、失败位置|pstack和starce看进程调用|分析耗时函数_strace -f -o-CSDN博客
【pstack pid】 显示进程所有线程栈的调⽤栈 【pid是进程号, ps -aux等命令可以查询】
pstack可以打印出该进程的所有线程的情况,自然就可以用来检测死锁。(pstack 实际上是 gstack 的一个软链接,而 gstack 本身是基于 gdb 封装的 Shell 脚本。用于打印正在运行的进程的栈跟踪信息。它能对潜在的死锁予以提示)
【strace -p pid】 在运行trace命令后,您将看到进程的系统调用跟踪信息。这些信息包括系统调用的名称、参数和返回值。其中-p选项用于指定要跟踪的进程的进程ID(PID),可用来查找进程卡死原因。按Ctrl+C将发送一个中断信号(SIGINT)到trace命令,使其立即停止。
【lspci | grep -i nvidia】 查看linux系统显卡型号,若有Nvidia显卡会显示型号等信息。
【lscpu】 查看Linux服务器的CPU 架构/核数信息
【cat /proc/cpuinfo】 查看CPU详细信息
【cat /proc/cpuinfo |grep "physical id"】 筛选physical id 信息 (若是这个机器一共有2个cpu,0是一个,1是一个)
【cat /proc/cpuinfo |grep processor】 筛选processor 信息(标号0-7的话,表示一共有8个核)
【grep -c processor /proc/cpuinfo】【grep processor /proc/cpuinfo |wc -l】 查看Linux服务器CPU总核数
【cat /etc/issue】 查看Linux发行版信息
【cat /etc/redhat-release】 查看CentOS版本
【cat /proc/version】 proc 为process的缩写,里面存放与内核相关的文件
Linux uname(英文全拼:unix name)命令用于显示操作系统信息,例如内核版本、主机名、处理器类型等。uname 可显示电脑以及操作系统的相关信息。 (Linux uname 命令 | 菜鸟教程 (runoob.com))
【uname -a】 显示系统信息
【uname -r】 查看Linux内核信息
【fdisk -l】 查看硬盘以及分区信息
【netstat -tunlp】 显示 tcp,udp 的端口和进程等相关情况
【echo $SHELL】 查看当前用的shell类型
【$PATH】 查看当前环境变量内容
查询IP地址:
- 【ifconfig】最常用,查看所有的 ip,找到 ens 开头的网卡,即可找到对应的 ip
- 【hostname -i】主机的 ip
- 【ip addr】网卡的方式查看 ip,找到 ens 开头的网卡,即可找到对应的 ip
参考:介绍一下rz、sz命令
rz 命令(Receive ZMODEM),使用 ZMODEM 协议,将本地文件批量上传到远程 Linux/Unix 服务器,注意不能上传文件夹。使用虚拟终端软件,如 XShell、SecureCRT 或 PuTTY 来连接远程服务器后,使用rz命令可以上传本地文件到远程服务器。
输入rz
回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行rz命令的目录。
常用选项:
-+, --append 将文件内容追加到已存在的同名文件
-E, --rename 已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-a, --ascii 以文本方式传输
-b, --binary 以二进制方式传输,推荐使用
--delay-startup N 等待 N 秒
-e, --escape 对所有控制字符转义,建议使用
-p, --protect 对 ZMODEM 协议有效,如果目标文件已存在则跳过
-q, --quiet 安静执行,不输出提示信息
-v, --verbose 输出传输过程中的提示信息
-y, --overwrite 存在同名文件则替换
-X, --xmodem 使用 XMODEM 协议
--ymodem 使用 YMODEM 协议
-Z, --zmodem 使用 ZMODEM 协议
--version 显示版本信息
--h, --help 显示帮助信息
sz 命令(Send ZMODEM)通过 ZMODEM 协议,可将多个文件从远程服务器下载到本地。注意不能下载文件夹,如果下载文件夹,请先打包再下载。
命令选项基本与rz相同,请参考上文rz的命令选项或者sz的manual,或者运行命令sz -h
查看。
【关于PC和服务器之间文件传输】【PC到服务器:rz -E】【服务器到PC:sz filename】
linux系统盘filesystem:/dev/vda1是Linux系统盘,也称为根分区,用于存储Linux系统的核心文件和数据;/dev/vdb是用于存储用户数据的数据盘,也称为扩展分区,其中可存放用户数据和程序文件。
---conda
安装anaconda:
- wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
- bash Anaconda3-2022.05-Linux-x86_64.sh
- cd ~
- vim .bashrc【添加export PATH=$PATH:/root/anaconda3/bin】
- source .bashrc
安装成功后键入:conda -V,有效输出版本号。 【conda 4.12.0】
借助anaconda,安装不同python环境:
- conda create -name <环境名> python=<版本>
- source activate <环境名> 【实际命令:conda activate 环境名】
- conda/pip install 需要的第三方库
查看虚拟环境列表:conda info -e/conda env list
切换环境: conda activate <环境名>
退出当前虚拟环境:conda deactivate
删除虚拟环境(包含已安装的相关python库):conda remove -n <环境名> --all
【python -m ipdb code.py】 启动命令式调试环境
---内存使用
free |
1、free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB。另外,free -h会自动选择以适合理解的容量单位显示。 2、Mem: 表示物理内存统计,如果机器剩余内存非常小,一般小于总内存的20%,则判断为系统物理内存不够; Swap: 表示硬盘上交换分区的使用情况,如剩余空间较小,需要留意当前系统内存使用情况及负载,当Swap的used值大于0时,则表示操作系统物理内存不够,已经开始使用硬盘内存了。 3、当Linux的物理内存快被耗尽时,系统会把一些进程占用的内存转移swap区,当物理内存被释放一部分时,swap区的一些内存占用又慢慢回到mem区,但是mem区却不再是之前的满负荷状态,而是有一部分free的内存! |
top | top 命令查看系统的实时负载, 包括进程、CPU负载、内存使用等等。键入 q 退出。 |
df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。 |
df [选项] [文件] |
|
- 使用
ls -ll
、ls-lh
命令进行查看当前目录下文件,前者会显示成字节大小,而后者会以KB、MB等为单位进行显示. - 通过命令
du -h –max-depth=1 *
,查看当前目录下各文件、文件夹的大小. - 查询当前目录总大小可以使用
du -sh
,其中s
代表统计汇总的意思,即只输出一个总和大小. - 命令
du -h –max-depth=0 *
,可以只显示直接子目录文件及文件夹大小统计值. - 使用
du -sh 目录名称
查看指定目录的总大小.
---GPU
参考:
nvidia-smi
是Nvidia显卡命令行管理套件,基于NVML库,旨在管理和监控Nvidia GPU设备。
显存占用和GPU利用率是两个不一样的东西,显卡是由GPU计算单元和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。
推荐小工具:gpustat,
直接pip install gpustat
即可安装,gpustat基于nvidia-smi
,可以提供更美观简洁的展示,结合watch命令,可以动态实时监控GPU的使用情况。
GPU计算单元类似于CPU中的核,用来进行数值计算。衡量计算量的单位是flop: the number of floating-point multiplication-adds,浮点数先乘后加算一个flop。计算能力越强大,速度越快。衡量计算能力的单位是flops: 每秒能执行的flop数量。
---文件
【cd ~】 跳转到当前用户根目录下
【rm file】 删除file文件
【rm -rf file/fold】 强制删除文件file,或者删除文件夹fold及其内容
【mvdir path1 path2】 移动或者重命名目录 跟着两个目录名就是重命名
【mkdir】 创建目录
【mkdir -p BBB/Test】 在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。)
【pwd】 显示当前目录的路径
【dircmp】 比较两个目录的内容
【cp】 复制文件
【cp -r dir1 dir2】 将dir1及其dir1下所包含的文件复制到dir2下
【cp -r dir1/. dir2】 将dir1下的文件复制到dir2, 不包括dir1目录
【mv A B】 将目录A重命名为B(同重命名文件)
【mv /a /b/c】 将/a目录移动到/b下,并重命名为c
【mv /home/1.txt /opt/】 是将home文件夹下的1.txt文件,移动到opt文件夹下,然后home文件夹下的1.txt文件将被删除
【cat file】 显示文件内容
【du -h filepath】 显示filepath直观的文件大小
【ls -a】 显示当前目录下的所有文件及文件夹包括隐藏的.和..等
【ls -al】 显示当前目录下的所有文件及文件夹包括隐藏的.和..等的详细信息
【ls -lh】 显示当前目录下文件大小等信息
【ls -lR | grep "^-" | wc -l 】 查看当前目录下有多少文件(包括子文件夹里面的),R代表子目录
【ls -l|grep "^-"| wc -l】 查看当前目录下的文件数量(不包含子目录中的文件)
【ls -l|grep "^d"| wc -l】 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上,如果需要查看子目录的,加上R
【ls -lR|grep ^d|wc -l】 查看某文件夹下文件夹的个数,包括子文件夹里的。
【cat -n file.txt】 使用 -n 标志显示文件内容及其对应的行号
【cat -b file.txt】 用标志 -b 显示非空行号。这将为非空行分配行号,而空行不会获得行号
【cat file1.txt file2.txt > output.txt】 将多个文件连接到一个新文件中
【cat temp.zip.* > temp.zip】 将所有分卷压缩包的内容连接到一个临时文件中
【cat temp.7z.* > temp.7z】 将分卷压缩包合起来,以便后续解压
【cat file2.txt >> file1.txt】 用 >> 重定向运算符,将 file2.txt 的内容追加到 file1.txt
【7z x file.7z 】 解压 file.7z
【7z x file.7z -o./mydir -aoa】 详细命令解释见下表:
x | 表示解压缩,并且使得压缩包内的文件所在的目录结构保持不变。 如果希望解压缩后所有的文件都存放在同一个目录下,则使用 e 命令。 |
-o./mydir | 表示把压缩包内的文件解压缩到 ./mydir 目录下。-o 这个参数用于指定输出目录(-o 选项后面的输出文件夹路径前不要有空格)。 |
覆盖选项 | -aoa:表示直接覆盖现有文件,而没有任何提示 -aos:跳过现有文件,其不会被覆盖。 -aou:如果相同文件名的文件以存在,将自动重命名被释放的文件。Eg:文件 file.txt 将被自动重命名为 file_1.txt。 -aot:如果相同文件名的文件以存在,将自动重命名现有的文件。Eg:文件 file.txt 将被自动重命名为 file_1.txt。 |
【7za x test.zip -r -o./】 不同于7z,7za是独立的执行文件,-r 表示递归解压缩所有的子文件夹,-o./ 为当前目录
【tar -xzvf file.tar.gz 】 解压 file.tar.gz
【tar -xzvf file.tar.gz -C /path/to/output/folder】 解压tar.gz压缩包到指定文件夹
|
【for tar in *.tar.gz; do tar xvf $tar; done】 批量解压tar.gz文件
【tar -xf file.tar】 解压 file.tar,-x 是解开的意思
【mkdir dir_data】【tar -xf data.tar -C dir_data】 tar解压到指定目录
【tar -rf all.tar *.gif】 将所有.gif的文件增加到all.tar的包里面去。-f,是最后一个参数,后面只能接档案名。-r是表示增加文件的意思
【tar --help】 查看命令说明
【zip -r test.zip test】 将test文件夹压缩为test.zip(-r表示递归处理,所有文件和子目录一并处理)
【unzip test.zip】 将压缩文件text.zip在当前目录下解压缩
【unzip -v test.zip】 查看压缩文件目录,但不解压
【unzip elasticsearch-head-master.zip -d head/】 如果要把文件解压到指定的目录下,需要用到-d参数
【unzip -n test.zip -d test/】【unzip -n -d test/ test.zip】 将压缩文件text.zip在指定目录/tmp
下解压缩(-d),如果已有相同的文件存在,要求unzip命令不覆盖原先的文件(-n)
【unzip -qO UTF-8 temp.zip】 命令使用 -q(quiet)选项在解压过程中减少输出信息,并使用 -O 选项指定文件名编码为 UTF-8。这在解压包含非 ASCII 文件名的 ZIP 文件时有用。
【find . -name "*.java"】 find 将开始在当前目录(用“.”表示)中查找任何扩展名为“java”的文件
【find . -name '*.mp4' |wc -l】 返回当前目录(包含子目录)中后缀.mp4的文件数目 (wc -l表示统计输出信息的行数,因为经过前面的过滤已经只剩下普通文件,一个目录或文件对应一行,所以统计的信息的行数也就是目录或文件的个数)
【find /path/to/search -type f -name '*tm*'】 返回指定目录中包含'tm'的文件
【find . -type f -name '*.pt' -print -exec rm {} \;】 查找当前目录(包含子目录)下所有后缀为.pt的文件并打印在终端,进一步删除符合条件的文件(-exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令)
---用户
【su username】【su - username】
su是(switch user)切换用户的缩写。通过su命令,可以从普通用户切换到root用户,也可以从root用户切换到普通用户。从普通用户切换到root用户需要密码(该密码是普通用户的密码),从root用户切换到普通用户不需要密码。
- $表示普通用户
- #表示超级用户,也就是root用户
当使用命令 su username时,对话特征和原始的登录身份一样。如果想要对话进程拥有转换后的用户 ID一致的特征,要使用短斜杠: su – username。
sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。
sudo su 运行sudo命令给su命令提权,运行su命令。 要求执行该命令的用户必须在sudoers中才可以。
【chmod -R 777 /dir1/dir2/】 设置dir1/dir2/的权限
~在Linux中代表用户主目录:对一般用户,~表示/home/(用户名);对于root用户,~表示/root
如果要查看~的真实面貌,可以先进入~目录,然后用pwd -P命令查看~的绝对路径:【cd ~】【pwd -P】
MacOS
--tips
差别:文件名大小写(mac 会忽略大小写,但是linux 不会。
yum install libsndfile [centos系统]
--zsh
zsh: command not foundmac终端指令失效解决方法
发现zsh终端里所有命令(ls/vim/...)全部失效了,参考上面链接:打开finder,快捷键【command+shift+句点】,显示隐藏文件夹;打开.zshrc文件;添加【
export PATH=/bin:/usr/bin:/usr/local/bin:${PATH}】,保存关闭;【source .zshrc】使之生效;done!
besides:oh-my-zsh ,“zsh: command not found: ls”
Windows
Windows操作系统,是由美国微软公司(Microsoft)研发的操作系统,问世于1985年。起初是MS-DOS模拟环境,后续由于微软对其进行不断更新升级,采用了图形用户界面(GUI),提升易用性,使Windows成为了应用最广泛的操作系统。
---文件
目的 | 命令解析 |
---|---|
cd跳转目录 | 添加强制跳转参数/d ,即cd /d+path ,其中path 为目的路径,直接跟在/d 后面,无空格。 |
查看文件 | dir ,相当于Linux的ls |
显示当前路径 | chdir,相当于Linux的pwd |
复制 | copy,相当于Linux的cp |
删除 |
del,相当于Linux的rm rmdir /s /q dir2delete,删除dir2delete文件夹 |
---系统信息
cmd打开终端,执行【wmic】命令:
- 【cpu list full】可以列出cpu信息。
- 【cpu get name】可以获取cpu名称。
- 【cpu get numberofcores】可以获取cpu的核心数。
参考
[1] Terminal,git,vim常用命令整理以及删除本地git仓库
[2] 如何查看linux服务器内存使用情况 - 疯了的小蜗 - 博客园 (cnblogs.com)
[3] unzip解压失败( cannot find zipfile directory)
[5] Linux zip命令