Part01 history
命令:history
作用:查看命令历史
用法:
将命令的运行结果写入文件:
- 覆盖写:命令 > 文件路径
- 追加写:命令 >> 文件路径
这里给大家介绍一个非常有意思的文件:/dev/null。它被称为Linux系统的黑洞,因为不管写入多少数据到这个文件,数据都会被销毁。
Part02 echo
1、简介
命令:echo
作用:将数据输出到standard output(标准输出),主要用来打印环境变量的值
2、关于standard output
①本质
如果我们说把一条数据打印到标准输出,那么我们就是在说:打印到命令行窗口。
②对比Java代码
System.out.println("Hello World!");
上面这行Java代码将字符串打印到了控制台,而如果我们我们把这段Java程序拿到Linux系统来执行,那么它就打印到standard output了。standard output很多时候也缩写为stdout。如果看到stderr,那么就表示在标准输出这里打印错误信息。
3、输出环境变量
①Linux中引用环境变量
在Linux系统中通过『$』来引用环境变量,例如:PATH
②使用echo输出环境变量
Part03 help
1、概述
在我们学习一个新的命令时,Linux系统自带的官方命令手册就是非常权威的参考文档。而man命令和info命令都可以调出一个命令对应的文档。区别在于man命令阅读体验略好,info命令文档内容更完整。
2、用法
①man命令
命令:man
对应单词:manual
格式:man [要查询的命令]
控制方式:
按键 | 说明 |
---|---|
空格 | 向下滚动一屏 |
回车 | 向下滚动一行 |
b | 向上滚动一屏 |
q | 退出 |
/关键词 | 搜索关键词 <br>n向下找 <br>N向上找 |
②info命令
命令:info
对应单词:information
格式:info [要查询的命令]
控制方式:
按键 | 说明 |
---|---|
方向键:上 | 控制光标向上移动 |
方向键:下 | 控制光标向下移动 |
delete键 | 向上翻页 |
空格 | 向下翻页 |
PgUp | 向上翻页 |
PgDn | 向下翻页 |
q | 退出 |
其实info命令每次进入的都是同一个文档,只是不同被查询命令进入的是这个文档的不同位置而已。
③补充
大部分命令都有–help参数,也起到参考文档作用。
Part04 shutdown
1、原则
服务器端不要轻易关机!执行关机或重启操作前一定要问自己下面六个问题:
- 我现在操作的具体是哪一台服务器?
- 这台服务器是否是生产服务器?
- 这台服务器可能有哪些人登录?
- 我关机或重启后对其他人是否有影响?
- 这台服务器关机或重启是否会导致其他服务器无法正常工作?
- 我现在的操作是否必须通过关机或重启来实现?
一旦错误的关闭或重启了服务器,有可能会给公司造成无法弥补的损失。
2、相关命令
命令 | 作用 |
---|---|
sync | 将内存数据保存到硬盘上 |
poweroff | 关机 |
reboot | 重启 |
Part05 backslash
符号:\
作用:如果一个命令特别长,那么可以使用反斜杠表示到下一行继续输入
示例:
./configure \
–prefix=/usr/local/nginx \
–pid-path=/var/run/nginx/nginx.pid \
–lock-path=/var/lock/nginx.lock \
–error-log-path=/var/log/nginx/error.log \
–http-log-path=/var/log/nginx/access.log \
–with-http_gzip_static_module \
–http-client-body-temp-path=/var/temp/nginx/client \
–http-proxy-temp-path=/var/temp/nginx/proxy \
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
–http-scgi-temp-path=/var/temp/nginx/scgi
Part06 curl
命令:curl
对应单词:client url
作用:通过命令给服务器发送请求
官方文档说明节选:
curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.
从文档中我们可以看到curl命令支持的通信协议非常丰富,其中我们最常用的还是HTTP协议。如果有需要curl可以通过参数详细设置请求消息头。
用法举例:
通过-X参数可以指定请求方式:
curl -X POST [资源的URL地址] 注意:X是大写的。
Part07 wget
命令:wget
作用:下载文件
官方文档说明:GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.
用法:
细节:
使用 -P 参数可以指定目标目录,例如:
wget -P /root https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
补充:提示证书过期
Part08 nohup[选学]
1、提出问题
我们把一个 SpringBoot 工程导出为 jar 包,jar 包上传到阿里云 ECS 服务器上,使用 java -jar xxx-xxx.jar 命令启动这个 SpringBoot 程序。此时我们本地的 xshell 客户端必须一直开着,一旦 xshell 客户端关闭,java -jar xxx-xxx.jar 进程就会被结束,SpringBoot 程序就访问不了了。
所以我们希望启动 SpringBoot 的 jar 包之后,对应的进程可以一直运行,不会因为 xshell 客户端关闭而被结束。
2、解决方案
①前台、后台运行
默认情况下 Linux 命令都是前台运行的,前台运行的特点是前面命令不执行完,命令行就一直被前面的命令占用,不能再输入、执行新的命令。
#!/bin/bash
echo "hello before sleep"
sleep 20
echo "hello after sleep"
前台(默认情况)运行上面脚本的效果是:
后台运行上面脚本的效果是:
但是以后台方式运行并不能解决前面提出的问题:我们的 shell 客户端(例如:xshell)和服务器断开连接后,SpringBoot 进程会随之结束,这显然不满足我们部署运行项目的初衷。
②不挂断运行
所谓“不挂断”就是指客户端断开连接后,命令启动的进程仍然运行。nohup 命令就是 ”no hang up“ 的缩写。使用nohup 命令启动 SpringBoot 微服务工程的完整写法是:
nohup java -jar spring-boot-demo.jar>springboot.log 2>&1 &