【Terminal】终端常用命令

Linux

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。Linux系统性能稳定,是整体开源的软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。

在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,它还被当作服务器,甚至当作网络防火墙,这是Linux的一大亮点。

---升阶命令

参考:GitHub - ibraheemdev/modern-unix: A collection of modern/faster/saner alternatives to common unix commands.

---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 等待 
-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:

  1. wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
  2. bash Anaconda3-2022.05-Linux-x86_64.sh
  3. cd ~
  4. vim .bashrc【添加export PATH=$PATH:/root/anaconda3/bin】
  5. source .bashrc

安装成功后键入:conda -V,有效输出版本号。 【conda 4.12.0】

借助anaconda,安装不同python环境:

  1. conda create -name <环境名> python=<版本>
  2. source activate <环境名> 【实际命令:conda activate 环境名】
  3. conda/pip install 需要的第三方库

查看虚拟环境列表:conda info -e/conda env list

切换环境: conda activate <环境名>

退出当前虚拟环境:conda deactivate

删除虚拟环境(包含已安装的相关python库):conda remove -n <环境名> --all  

【python -m ipdb code.py】  启动命令式调试环境

---内存使用

参考:Linux - top命令监控列表的详细解析 

 

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 [选项] [文件]

  • df -hl 查看磁盘剩余空间
  • df -h 查看每个根路径的分区大小
  • 使用ls -llls-lh命令进行查看当前目录下文件,前者会显示成字节大小,而后者会以KB、MB等为单位进行显示.
  • 通过命令du -h –max-depth=1 *,查看当前目录下各文件、文件夹的大小.
  • 查询当前目录总大小可以使用du -sh,其中s代表统计汇总的意思,即只输出一个总和大小.
  • 命令du -h –max-depth=0 *,可以只显示直接子目录文件及文件夹大小统计值.
  • 使用du -sh 目录名称查看指定目录的总大小.

---GPU

参考:

科普帖:深度学习中GPU和显存分析

GPU之nvidia-smi命令详解

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压缩包到指定文件夹  

  • -x:表示解压缩。
  • -z:表示处理.gz压缩文件。
  • -v:表示显示详细信息(可选)。
  • -f:表示指定要处理的文件。
  • -C:表示将解压缩的文件解压到指定的目录。

 

【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

Mac下查看、添加path环境变量

 

--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)

[4] 【Linux】Linux统计文件夹、文件数量的命令

[5] Linux zip命令

[6] linux 打包压缩tar、gzip、bzip2、xz、zip、unzip

[7] Linux中分卷压缩和合并解压_浮云6363的博客-CSDN博客

posted @ 2019-12-24 12:03  Skye_Zhao  阅读(3823)  评论(0编辑  收藏  举报