# linux-ssh **Repository Path**: cheerqjy/linux-ssh ## Basic Information - **Project Name**: linux-ssh - **Description**: linux-ssh学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-03 - **Last Updated**: 2022-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # linux-ssh ## 介绍 linux-ssh学习笔记 ## ssh 远程连接命令 ```shell ssh [ 远程主机用户名] @[远程服务器主机名或IP地址] -p port ssh root@116.205.139.109 # root 表示服务器用户名 # -p 后面是指端口号,一般默认22 可不写 # 回车输入密码即可登录 ``` ## MobaXterm1软件 ## vscode 远程连接 vscode如何远程连接Linux 1.在vscode扩展里面安装下面两个扩展 ![](https://gitee.com/cheerqjy/utools-picture/raw/master/984dfce9fd55477a8a66f4790b9069dd-2022-9-3-10:32:28.png) 2.快捷键 Ctrl + Shift + P打开命令面板,输入ssh,选择Remote-SSH:Settings,将Show Login Terminal勾选上 ![](https://gitee.com/cheerqjy/utools-picture/raw/master/vscode-ssh-2022-9-3-10:34:39.png) ![](https://gitee.com/cheerqjy/utools-picture/raw/master/1662172523480-2022-9-3-10:35:23.png) 3.点击左边远程资源管理器,然后在点击设置(configure)小图标 ![](https://gitee.com/cheerqjy/utools-picture/raw/master/1662172552731-2022-9-3-10:35:52.png) 选择config所在的路径 ![](https://gitee.com/cheerqjy/utools-picture/raw/master/1662172578653-2022-9-3-10:36:18.png) 会打开这样的界面 ![](https://gitee.com/cheerqjy/utools-picture/raw/master/1662172598412-2022-9-3-10:36:38.png) Host XXX为自己设置的名称 HostName 为ubuntu ip地址(在虚拟机终端输入 ip addr) User 为unbuntu用户名(我使用的为root用户) 保存 4.保存config文件之后,左侧会显示一个小电视的图标,右键点击connect ![](https://gitee.com/cheerqjy/utools-picture/raw/master/1662172635550-2022-9-3-10:37:15.png) ## 基本命令 ### 路径 ```shell ./ # 当前目录 ../ # 上级目录 / # 根目录 ~ # root目录(当前用户的home目录) root/ # 相对路径 /root/ # 绝对路径 ``` ### mkdir创建文件夹 ### rmdir 删除空文件夹 ### cp 复制文件及文件夹 copy file ```shell # 把myserver 复制到 myapp中 cp -r myserver/ myapp/ # -r | --recursive 递归复制 因为文件夹中还有文件(-r的位置也可以 cp myserver/ -r myapp/) # 或者 cp test/* myapp/ ``` ### mv移动文件及文件夹 ``` mv 文件名路径 mv hello.csv ./python;把当前目录的hello.csv剪切到当前目的python文件夹里 mv hello.txt ..javal把当前目录下的文件hello.txt剪切到上一级目录的子目录java目录里 mv hello.txt ..把文件hello.txt移动到上一级目录 ``` ### touch 创建文件 ### rm 删除文件及文件夹 ```shell rm file.txt rm -f testfile # -f选项 表示将在不要求确认的情况下 强行 删除文件 rm -rf testdirectory # 删除名为 testdirectory 的目录以及该目录中的所有内容(使用的 -r 选项是递归删除文件)。 删除目录 不加 -r 会报错 ``` #### 删除隐藏文件 Linux 下隐藏文件是指以符号 . 开头的文件,这种文件使用 ls 命令不能直接查看,需要加上 -a 选项才可以看到。所以如果需要删除该目录下所有隐藏文件的话,可以这样操作: ```powershell $ rm -rf .* ``` #### 参数说明 - -f:–force 不提示,强制删除文件或目录,但是会忽略不存在的文件 - -i:–interactive 进行交互式删除,删除前逐一询问确认 - -r, -R:–recursive 递归删除,将指定目录下的所有文件与子目录一并删除 - -v: --verbose 详细显示进行的步骤 - –help 显示此帮助信息并退出 - –version 输出版本信息并退出 Linux 下没有回收站,所以文件一旦使用rm命令删除,则无法恢复,所以必须格外小心地使用该命令。 ### cd 切换目录 属于磁盘管理(change directory) ```shell cd /usr/bin #跳到 /usr/bin/ : cd .. cd / #快速切换到根目录,任何位置直接跳转到根目录 cd ~ #快速切换到root(跳到自己的 home 目录 ) 如果是root用户,cd ~ 相当于 cd /root; 如果是普通用户,cd ~ 相当于cd /home/当前用户名 cd - #切换到上一个所在目录 ``` ### ls 列出文件 ````shell ls # 列出可见文件列表 ls -a #列出所有文件 包含隐藏文件 ls -l 简写为 ll # 列出文件详情 以单位字节显示不含隐藏的所有文件和目录 ls -h ls -lh 简写为 ll -h #以单位易读显示不含隐藏的所有文件和目录 ```` ### pwd查看目录 ### `which`查找可执行的文件路径 ```shell which 查询目标 which nginx # 输出: /usr/sbin/nginx ``` ### whereis查看软件安装路径 ``` whereis nodejs 复制代码 ``` ### echo输出 ### echo -n 可接收输入值 ``` echo -n '输入你最喜欢的网站名: ' ``` ### >指令和>>指令 重定向 可以生成到文件中 方便复制 `>输出重定向和>>追加基本语法` ```shell ls -l > 文件 # 列表的内容写入文件a.txt中(覆盖写) ls -al >> 文件 # 列表的内容追加到文件aa.txt的末尾 cat 文件1 > 文件2 # 将文件1的内容覆盖到文件2 echo "内容">>文件 ``` 应用实例 - 案例1:将/home目录下的文件列表写入到`/home/info.txt`中 ```shell ls -l > a.txt # 没有a.txt就创建 ``` - 案例2:将当前日历信息追加到`/home/mycal`文件中[提示cal ] ### head查看文件指定行数的内容(正序) ``` head -n 5 文件 # 查看前5行 ``` ### tail查看文件指定(倒叙) 且实时监控 ``` head -n 5 文件 # 查看最后5行 head -f 文件 # 实时监控文件 ``` ### cat查看文件内容 ```shell cat 文件名 #直接查看文件内容 cat -n 文件名 #显示行号 cat -n 文件名 | more #通过 管道符 把内容给 more 进行查看 ``` ### more 翻页查看文件内容 more指令是一企基于`vi`编辑器的文本过滤器。它以全屏幕的方式按页显示文本文件的内容。more指令市内置了若干快捷键,详见操作说明 #### 基本语法 ```shell more 文件 ``` #### 操作说明 | 按键 | 功能 | | ------ | -------- | | 空格 | 整页翻 | | ctrl+b | 上一页 | | ctrl+f | 下一页 | | enter | 一行一行 | #### 应用实例 案例:采用more查看文件lete/profile ### history 查看操作过的命令记录 ``` history #查看所有输入过的ssh命令 history 10 # 查看10条 ``` ### clear 清屏 ### date 时间 ### cal 显示日历 (calendar) ````shell cal #显示一个日历 ```` ### find查找文件 ```shell find /root -name hello.txt # 查找root文件夹下面的hello.txt -name:即按名字搜索 find / -name *.txt # 通配符 查找后缀为txt的文件 find / -size +20M #查找根目录下 文件 大于20M的文件 , -20M就是小于20M 不要符号就是等于20M ``` ### locate 快速定位文件路径 ``` locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需逸历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate 时刻。 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。 -应用实例 案例1:请使用 locate指令快速定位hello.txt文件所在目录 ``` ### grep过滤和管道符号 | grep过滤查找,管道符,“I",表示将前一个命令的处理结果输出传递给后面的命令处理。 基本语法 grep [选项]查找内容源文件常用选项 | 选项 | 功能 | | ---- | ---------------- | | -n | 显示匹配行及行号 | | -i | 忽略字母大小写 | 应用实例 案例1:请在hello.txt文件中,查找“yes”所在行,并且显示行号 ```shell cat hello.txt | grep yes # 用cat查找到hello.txt的文件内容 通过|管道符 交给grep 查找yes # -n显示行号 cat hello.txt | grep -n yes # -ni显示行号 且忽略大小写 cat hello.txt | grep -ni yes ``` ### bc 计算器 ``` 进入计算器 ``` ## vi和vim 文本编辑 ## 解压缩 gzip zip tar ### gzip和gunzip解压缩 ```sh gzip 文件 #把指定文件进行压缩 后缀为.gz 注意不保留源文件 gunzip 文件 #解压 ``` ### zip/unzip指令 zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用的 基本语法 ```shell zip [选项 ]XXX.zip #将要压缩的内容(功能描述。压缩文件和目录的命令) unzip [选项 ]XXXzip #功能描述。解压缩文件 ``` zip常用选项 -r。递归压缩,即压缩整个目录 -unzip的常用选项 -d<目录>﹔指定解压后文件的存放目录 应用实例 案例1:将home下的所有文件进行压缩成mypackage.zip 案例2:将mypackge.zip解压到/opt/tmp目录下 ### tar ## 用户管理 ### `whoami` 显示用户名 ```shell whoami # 输出: root ``` ## 权限管理 ### chmod修改权限 ``` chmod ``` ## `ps`进程 ### 进程的基本介绍 1. 在LINUX中,每个执行的程序《代码)都称为一个进程。每一个进程都分配一个ID号。 2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www.,服务器。 3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。 4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。 ### `ps`查看进程 `ps(process status)`命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数. | 字段 | 说明 | | ---- | ---------------------- | | PID | 进程识别号 | | TTY | 终端机号 | | TIME | 此进程所消CPU时间 | | CMD | 正在执行的命令或进程名 | 常用参数 `a`、 `u`、 `x` - ps -a:显示当前终端的所有进程信息 - ps -u:以用户的格式显示进程信息 - ps -x:显示后台进程运行的参数 ```shell ps -aux # 查看所有进程 ps -aux | more # 分页查看进程 ps -aux | grep git # 指定查找 ps -ef # 查看进程的父进程 ``` 输出格式 ``` USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ``` ### kill 终止进程 ```shell kill [选项] 进程号 例:杀死指定进程号 kill 12345 ``` ## RPM (redhat package manager) 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。 Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。 ### rpm包的简单查询指令: 查询已安装的rpm列表 ```shell rpm -qa | grep xx ``` ### rpm包名基本格式: 一个rpm包名: firefox-45.0.1-1.el6.centos.x86_64.rpm名称:firefox 版本号: 45.0.1-1 适用操作系统: el6.centos.x86_64表示centos6.x的64位系统 如果是i686、i386表示32位系统,noarch表示通用。。 ### rpm包的其它查询指令: ```shell rpm -qa # 查询所安装的所有rpm软件包 rpm -qa | more rpm -qa | grep x [rpm -qa | grep firefox ] rpm -q 软件包名 # 查询软件包是否安装 rpm -q firefox rpm -qi 软件包名 #查询软件包信息 rpm -qi file rpm -ql 软件包名 # 查询软件包中的文件 rpm -ql firefox rpm -qf 文件全路径名 # 查询文件所属的软件包 rpm -qf /etc/passwd rpm -qf /root/install. log ``` ### 安装rpm包:(本地软件包) ```shell rpm -ivh RPM包全路径名称 ``` 参数说明 - i=install安装 - v=verbose提示 - h=hash进度条 ### 卸载rpm #### 基本语法 ```shell rpm -e 包的名称 ``` #### 应用案例 ```shell 删除firefox软件包 1、如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。 如:rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1 2、如果我们就是要删除 foo这个rpm包,可以增加参数--nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行 如:S rpm -e --nodeps foo ``` ## yum(Yellow dog Updater, Modified) (centos常用) ### yum介绍 Yum是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装(yum安装的软件包都是rpm格式的),可以自动处理依赖性关系,并且一次安装所有依赖的软件包。 ### yum的基本指令 ```shell # 查询yum服务器是否有需要安装的软件 yum list | grep xx 软件列表 # 安装指定的yum包 yum install xxx # 下载安装 # 安装wget(相当于迅雷) yum install -y wget # yum卸载命令 yum erase 安装包名称 # yum删除命令 yum remove 安装包名称 # 列出所有可更新的软件清单 yum check-update # 列出所有已安装的软件包 yum list installed # yum search 查找对应可以安装的软件包 yum search nodejs ``` ### yum应用实例: 案例:请使用yum的方式来安装firefox ## curl 下载(文件传输) ```shell # 安装nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash # 返回html: curl ``` ## wegt 下载安装 ```shell # 安装nvm: wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` ## curl和wegt区别 [www.cnblogs.com/lsdb/p/7171…](https://link.juejin.cn?target=https%3A%2F%2Fwww.cnblogs.com%2Flsdb%2Fp%2F7171779.html) curl和wget基础功能有诸多重叠,如下载等。 非要说区别的话,curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。 下载文件 ```bash curl -O http://man.linuxde.net/text.iso #O大写,不用O只是打印内容不会下载 wget http://www.linuxde.net/text.iso #不用参数,直接下载文件 复制代码 ``` 下载文件并重命名 ```bash curl -o rename.iso http://man.linuxde.net/text.iso #o小写 wget -O rename.zip http://www.linuxde.net/text.iso #O大写 复制代码 ``` 断点续传 ```bash curl -O -C - http://man.linuxde.net/text.iso #O大写,C大写 wget -c http://www.linuxde.net/text.iso #c小写 复制代码 ``` 限速下载 ```arduino curl --limit-rate 50k -O http://man.linuxde.net/text.iso wget --limit-rate=50k http://www.linuxde.net/text.iso 复制代码 ``` 显示响应头部信息 ```arduino curl -I http://man.linuxde.net/text.iso wget --server-response http://www.linuxde.net/test.iso 复制代码 ``` 同时打印请求头和响应头 ```bash curl -v http://man.linuxde.net/text.iso curl http://man.linuxde.net/text.iso --trace-ascii /dev/stdout wget -d http://www.linuxde.net/test.iso 复制代码 ``` `wget`利器--打包下载网站 ```css wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/ 复制代码 ``` ## apt-get(ubuntu下载器) ## shell 编程 ## sh 执行文件命令 ```shell sh 文件名.sh 参数1 参数2 文件中可使用$n接收传入参数变量 $0 文件名 包含路径 $1 参数1 $2 $n ``` ## 网络 ```shell ifconfig 查看公网ip curl cip.cc 还可以用如下命令: curl ifconfig.me curl http://members.3322.org/dyndns/getip curl icanhazip.com ``` ## nohup后台运行node ```shell nohup npm run serve > test.log & exit ``` ### 退出后台 使用下面的命令查询出相关进程,全部杀死进程即可 ```shell ps -ef | grep node ``` ## sudo命令 Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。 使用权限:在 /etc/sudoers 中有出现的使用者。 # 参考 https://blog.csdn.net/cxn15335120506/article/details/123238233