服务相关命令
1、随着微服务兴起,springboot也用得越来越多,springboot项目默认是打包成jar包的,执行jar包就可以同时启动其内置的tomcat,免去了单独部署tomcat的工作,可谓非常方便
2、目前在工作中遇到的服务包主要有两种类型:
⑴jar包:其内置了Tomcat,因此不需要部署在Tomcat中,可直接启动
⑵war包:其需要部署在Tomcat中,依靠Tomcat来启动
⑶因此这里主要介绍下启动jar包相关的命令
直接启动
1、命令格式:java -jar 包名
例1:
注:
1、可以看到启动日志是直接打印在终端上的
2、这种启动方式有个缺点:启动好了之后就不能动了,不能Ctrl+C退出,也不能关闭终端,一旦退出或者关闭终端,程序(服务)就会关闭
后台启动
1、命令格式:java -jar 包名 &
例2:
注:
1、&符号就代表后台启动
2、这种启动方式日志仍然输入到终端控制台中,虽然Ctrl+C不会关闭程序,但退出终端,程序会关闭
nohup启动
1、命令格式:nohup java -jar 包名 &
2、nohup英文全称no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
例3:
注:
1、这种方式会生成一个nohup.out来记录日志,所以日志不会直接输出到终端,而且这种方式启动,Ctrl+C或者关闭终端,程序都不会结束
2、可以使用"tail -f nohup.out"来查看日志内容
3、Ctrl+C:发送SIGINT信号给前台进程组中的所有进程,常用于终止正在运行的程序
⑴这里的服务是在后台启动的,因此Ctrl+C不会影响到服务的启动
指定日志文件
1、nohup启动的日志输出文件nohup.out是自动生成的,但是我们更希望自己指定日志输出文件,因此可以用以下命令
2、命令格式:nohup java -jar 包名 > logs.log &
例4:
注:
1、此命令会将日志重定向到当前的logs.log文件中,但是只会输出标准输出
2、这种方式启动,Ctrl+C或者关闭终端,程序都不会结束
重定向错误输出
1、上一条命令只会讲标准输出(stdout)重定向到logs.log文件中,下面命令可以将错误也输出到文件中,也就是stderr
2、命令格式:nohup java -jar 包名 > logs.log 2>&1 &
⑴Linux下1表示标准输出,2表示错误输出
⑵>logs.log表示:标准输出重定向到logs.log中,默认是标准输出,省略1,不省略的话可以写成1>logs.log
⑶2>&1表示:错误输出也重定向到logs.log中,其中&1表示前面的logs.log文件。就是错误输出将会和标准输出输出到同一个地方
①不加&,写成2>1的话就表示把错误输出到1这个文件而不是前面标准输出的文件logs.log,所以&要加上
⑷最后一个&表示以后台方式启动程序
3、高级用法:nohup java -jar 包名 >/dev/null 2>&1 &
⑴使用"nohup"方式来启动时会自动生成一个"nohup.out"文件,如果这个日志量非常大的话,就会占很多空间,此时就可以使用">/dev/null"
⑵>/dev/null:将标准输出1重定向到/dev/null中
①/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称"黑洞"
②那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容
③2>&1:表示将错误输出绑定到标准输出上
指定配置文件启动
1、一般来说在启动服务时,服务所使用到的配置文件都是包内的
2、同时,我们也可以在启动jar包时指定包外的配置文件:使用包外的配置文件来启动
例:
注:以下例子都是基于"application-test.properties"型配置文件
1、退出或者关闭终端,程序(服务)就会关闭
java -jar 包名.jar --spring.profiles.active=test(命令中的test表示配置文件名,只需要名字中间那部分就好了)
2、Ctrl+C或者关闭终端,程序都不会结束并重定向错误输出
nohup java -jar 包名.jar --spring.profiles.active=test >/dev/null 2>&1 &
关闭jar包程序
1、如果使用后台启动java服务时,可以使用kill进程的方式结束进程
2、步骤:
⑴查看java进程:ps -ef | grep java
⑵根据步骤1返回的进程号,使用:kill -9 进程号
例5:
ps命令
1、Linux中的ps命令(process status)命令用于显示当前进程的状态,类似于windows的任务管理器
2、语法:ps [options] [--help]
3、参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
⑴-A:列出所有的进程
⑵-e:在命令执行后显示环境
⑶-f: 完整显示输出
⑷-u:以用户为主的格式来显示程序状况(ps -u 用户名)
4、使用带有-ef选项的ps命令,返回系统中所有用户的所有进程的完整列表
⑴一般将此ps命令的结果传送到grep中,则该结果更易于查看:用于查找指定进程,通过传入的关键字来查找
⑵格式:ps -ef | grep 进程关键字
⑶如:ps -ef | grep java,表示只查看存在java关键字的进程
例6:
注:
UID:进程用户ID,虽然uid通常是指数字型的标识,但在第一列下指定的是用户名,标记为UID
PID:进程ID
PPID:父进程ID
C:CPU调度情况
STIME:进程启动的时间
TIME:进程共占用CPU的时间
CMD:启动进程的命令
tail命令
1、作用:tail命令可用于查看文件的内容,有一个常用的参数" -f "常用于查阅正在改变的日志文件
⑴命令"tail -f filename":会把filename文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要filename更新就可以看到最新的文件内容
⑵-f参数常用于在终端显示屏上查看服务等的实时日志
⑶然后可以使用Ctrl+C来终止显示
2、语法:tail [参数] [文件名]
3、参数:
⑴-f:循环读取
⑵-q:不显示处理信息
⑶-v:显示详细的处理信息
⑷-c<数目>:显示的字节数
⑸-n<行数>:显示文件的尾部 n 行内容
例7:
查看端口号
1、命令格式:netstat -tunlp
⑴该命令用于查看当前所有已被占用的端口号
2、命令格式:netstat -tunlp | grep 关键字
⑴该命令用于查看指定信息的端口号
⑵关键字值可以为进程号、端口号等
例8:
系统时间
1、查看当前系统时间:date
2、修改系统时间:date -s 时间字符串
⑴只修改系统的日期,不修改时间(时分秒):date -s 2019-06-18
⑵只修改时间不修改日期:date -s 16:10:00
⑶同时修改日期和时间:date -s "2016-06-18 16:10:00"
⑷注:使用该方法修改的时间,在重启linux系统后会失效
拓展
shell重定向介绍
1、就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置,在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,输入可能来自于外部的一些文件,运算的结果通常又写到其他的文件中。而且程序在运行的过程中,会有一些关键性的信息,比如异常堆栈,外部接口调用情况等,这
些都会统统写到日志文件里
2、shell脚本也一样,但是我们一般在使用shell命令的时候,更多地还是通过键盘输入,然后在屏幕上查看命令的执行结果。如果某些情况下,我们需要将shell命令的执行结果存储到文件中,那么我们就需要使用输入输出的重定向功能
文件描述符
1、当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用
2、所以我们平时在执行shell命令中,都默认是从键盘获得输入,并且将结果输出到控制台上
⑴但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向
⑵比如我们将1指向文件,那么标准的输出就会输出到文件中
类型 | 文件描述符 | 默认情况 | 对应文件句柄位置 |
标准输入:standard input | 0 | 从键盘获得输入 | /proc/self/fd/0 |
标准输出:standard output | 1 | 输出到屏幕即控制台 | /proc/self/fd/1 |
错误输出:error output | 2 | 输出到屏幕即控制台 | /proc/self/fd/2 |
输出重定向
1、输出重定向的使用方式很简单,基本的一些命令如下:
命令 | 介绍 |
command >filename | 把标准输出重定向到新文件中 |
command 1>filename | 同上 |
command >>filename | 把标准输出追加到文件中 |
command 1>>filename | 同上 |
command 2>filename | 把标准错误重定向到新文件中 |
command 2>>filename | 把标准错误追加到新文件中 |
注:
1、我们使用>或者>>对输出进行重定向
⑴符号的左边表示文件描述符,如果没有的话表示1,也就是标准输出,符号的右边可以是一个文件,也可以是一个输出设备
2、当使用>时,会判断右边的文件存不存在,如果存在的话就先删除,然后创建一个新的文件,不存在的话则直接创建
3、但是当使用>>进行追加时,则不会删除原来已经存在的文件