精华内容
下载资源
问答
  • Linux后台执行任务

    2017-01-15 14:02:00
    使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的 如果脚本已经运行, 可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, 再 disown 解除关联, 例如: ^Z [1]+ Stopped make -j2 [tomcat@n00 ...

    执行时, 可以在命令最后添加 & 使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的

    如果脚本已经运行,  可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, 再 disown 解除关联, 例如:

    ^Z
    [1]+  Stopped                 make -j2
    [tomcat@n00 master]$ bg
    [1]+ make -j2 &
    # 注意: disown之后, 此任务将不出现于jobs, 也不能再转回前台, 但是输出依然是和当前shell绑定的 [tomcat@n00 master]$ disown [tomcat@n00 master]$ exit

    查看在后台运行的任务

    jobs -l
    # -l: 用于显示任务的 process id

    将后台任务转回前台

    %process-id
    # or
    fg process-id

    如果要在屏显的同时记录日志, 通过tee命令

    $ make -j2 | tee output.log

    对于需要在关闭shell后还需要继续执行的任务, 需要使用nohup, 例如

    nohup make -j1 TARGET_DEVICES=y1 > ~/openwrt/logs/20170115.log 2>&1 &
    # 其中执行的命令是"make -j1 TARGET_DEVICES=y1"

    上面的命令会将输入记录到log文件.  对于上面的命令的解释:

    bash 中 0, 1, 2 三个数字分别代表 STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, 即标准输入(一般是键盘), 标准输出(一般是用户终端控制台), 标准错误(出错信息输出)

    0 标准输入 (一般是键盘)
    1 标准输出 (一般是用户终端控制台)
    2 标准错误 (出错信息输出)

    输入重定向, 例如 cat < test.c 将 test.c 重定向为 cat 命令的输入源.

    输出重定向, 用其他输出目标替换标准输出, 例如 ls > 1.txt 将 ls 的结果从标准输出重定向为 1.txt 文本. 有时候会看到如 ls >> 1.txt这类的写法, >> 的区别在于 > 用于新建而 >> 用于追加, 即 ls > 1.txt 会新建一个 1.txt 文件并且将 ls 的内容输出到新建的 1.txt 中, 而 ls >> 1.txt 则用在 1.txt 已经存在而我们只是想将 ls 的内容追加到 1.txt 文本中的时候

    展开全文
  • 1 Tomcat 基本知识首先介绍一些 Tomcat 的基本知识,防止有纯小白看的云里...bin : 主要用来存放一些脚本文件,一种格式是 sh 的是在 Linux 使用的脚本,另一种格式是 bat 的是在 Windows 中使用的脚本。conf : 主要...

    1 Tomcat 基本知识

    首先介绍一些 Tomcat 的基本知识,防止有纯小白看的云里雾里的。

    下面这张图是一个下载好二进制版的的 Tomcat ,直接解压得到的,虽然版本是 9.x ,但是这个目录结构和 8.5 是一致的,不影响介绍。

    e4de001afe0e5a78e9ee01d428bdc6de.png
    • bin : 主要用来存放一些脚本文件,一种格式是 sh 的是在 Linux 使用的脚本,另一种格式是 bat 的是在 Windows 中使用的脚本。
    • conf : 主要用来存放一些 Tomcat 的配置文件,有 xml 格式的也有 properties 格式的。
    • lib : 用来存放一些 Tomcat 运行时所需要的 jar 包。
    • logs : 日志目录。
    • temp : 存放一些运行过程中产生的临时文件。
    • webapps : 这个应该很熟悉,主要用来存放应用程序,可以是 war 包或者是 jar 包。
    • work : 主要用来存放 Tomcat 在运行时的编译后文件。清空work目录,然后重启 Tomcat ,可以达到清除缓存的作用。

    现在的 IDE(Integrated Development Environment) 工具可以直接将 Tomcat 配置在工具中,比如最常用的 Eclipse 和 IDEA ,启动 Tomcat 的时候只需要点一下按钮就可以启动,实际上这两个 IDE 工具只是帮我们调用了 Tomcat 的启动脚本。

    Tomcat 的各种脚本都放在 bin 这个目录下,我们打开看一下:

    d143019b65cc49eabb285a5b946ca904.png

    可以轻易的找到两个启动脚本 startup.batstartup.sh 。一个是 Windows 下的脚本,一个 Linux 下的。

    同样,还可以看到两个停止脚本 shutdown.batshutdown.sh

    这是在 Tomcat 的二进制包中,我们还可以看下源码包下是什么样的。

    a2c5c7df5fc7a757cd8b389283ceeeec.png

    可以看到,基本上该有的都有,最重要的启停脚本都还在。

    既然我现在是在 Windows 环境下,那么启动就从 startup.bat 看起。

    2 Tomcat 启动第一步:startup.bat

    第一个打开 startup.bat 这个启动脚本,看下里面写了啥具体,这段脚本不长,我把里面的内容摘出来:

    setlocalrem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not "%CATALINA_HOME%" == "" goto gotHomeset "CATALINA_HOME=%CURRENT_DIR%"if exist "%CATALINA_HOME%bincatalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%":gotHomeif exist "%CATALINA_HOME%bincatalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomeset "EXECUTABLE=%CATALINA_HOME%bincatalina.bat"rem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end

    最开始一大段的 rem 注释我没摘,只摘了最后一部分会执行的内容。

    第一段是在设置当前的 CATALINA_HOME 的环境变量,如果没有设置的话,会将当前运行脚本的目录作为该环境变量的值,然后跳转到 :okHome 那里。

    接下来设置了 EXECUTABLE 的路径是 %CATALINA_HOME%bincatalina.bat

    然后开始验证验证设置的 EXECUTABLE 中的 catalina.bat 这个文件存不存在,如果不存在的话直接结束,如果存在的话接着往下走。

    接下来是将运行脚本前设置的其他参数保存到 CMD_LINE_ARGS 这个变量中,然后在最后执行了 catalina.bat 这个文件,跟了两个参数,第一个是 start ,第二个就是刚才保存的变量 CMD_LINE_ARGS

    这种脚本代码建议放在编辑器里看,千万不要使用那个 Windows 自带的记事本,用那玩意看估计大多数人直接就看懵了。

    我通常是放在 VSCode 中看,会自动对代码进行高亮展示,给大家看下上面这段脚本放在 VSCode 中的样子:

    97f641194f80583e4f211b0a820beacb.png

    可以看到,正常注释变灰,关键字变蓝高亮,并且跳转语句直接变橙色,非常方便我们阅读。

    3 Tomcat 启动第二步:catalina.bat

    这个脚本太长了,我就单纯的截取比较重要的进行介绍。

    set "CURRENT_DIR=%cd%"if not "%CATALINA_HOME%" == "" goto gotHomeset "CATALINA_HOME=%CURRENT_DIR%"if exist "%CATALINA_HOME%bincatalina.bat" goto okHomecd ..set "CATALINA_HOME=%cd%"cd "%CURRENT_DIR%":gotHomeif exist "%CATALINA_HOME%bincatalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHome

    在最开头的地方,校验 CATALINA_HOME 是否存在,如果不存在,则设置 CATALINA_HOME 为当前路径。

    接着下面设置了一下 CATALINA_BASE 这个变量。

    if not "%CATALINA_BASE%" == "" goto gotBaseset "CATALINA_BASE=%CATALINA_HOME%":gotBase

    接下来到了一个重点内容,判断 setclasspath.bat 是否存在,如果存在的话就执行一下:

    rem Get standard Java environment variablesif exist "%CATALINA_HOME%binsetclasspath.bat" goto okSetclasspathecho Cannot find "%CATALINA_HOME%binsetclasspath.bat"echo This file is needed to run this programgoto end:okSetclasspathcall "%CATALINA_HOME%binsetclasspath.bat" %1if errorlevel 1 goto end

    这个文件实际上是校验是否设置了 JAVA_HOME 或者 JRE_HOME 的环境变量,如果没有设置则会在控制台打印对应的信息。

    接下来是有关于 CLASSPATH 的设置和校验,然后是一堆变量的设置和校验,无需关注,接着使用 echo 打印了一些信息:

    echo Using CATALINA_BASE:   "%CATALINA_BASE%"echo Using CATALINA_HOME:   "%CATALINA_HOME%"echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"if ""%1"" == ""debug"" goto use_jdkecho Using JRE_HOME:        "%JRE_HOME%"goto java_dir_displayed:use_jdkecho Using JAVA_HOME:       "%JAVA_HOME%":java_dir_displayedecho Using CLASSPATH:       "%CLASSPATH%"

    各种比较重要的变量在这里进行了一些打印,接下来又设置了一些比较重要的变量:

    set _EXECJAVA=%_RUNJAVA%set MAINCLASS=org.apache.catalina.startup.Bootstrapset ACTION=startset SECURITY_POLICY_FILE=set DEBUG_OPTS=set JPDA=

    这里的 _EXECJAVA 实际上是我们在 JAVA_HOME 或者是 JRE_HOME 中 bin 下面的 java.exe

    这里出现的 _RUNJAVA 变量,是在上面的 setclasspath.bat 那个脚本中进行设置的。

    而这个 MAINCLASS 的值是 org.apache.catalina.startup.Bootstrap ,这个是我们第一篇文章启动 Tomcat 时候的那个类,不知道各位还有印象不。

    接下来设置了一个变量 ACTION 的动作时 start ,用屁股想想应该是启动的意思。

    然后对参数进行了一次判断:

    if ""%1"" == ""debug"" goto doDebugif ""%1"" == ""run"" goto doRunif ""%1"" == ""start"" goto doStartif ""%1"" == ""stop"" goto doStopif ""%1"" == ""configtest"" goto doConfigTestif ""%1"" == ""version"" goto doVersion

    如果没有其他参数做覆盖,这里的参数就是上面设置的 start ,直接跳转到最后的 doStart 去了,不过可以看到, Tomcat 启动可以接受的参数有 debug , run , start , stop , configtestversion ,我们平时在 IDE 工具里用的比较多的应该有 debug , run , start , stop , 剩下的两个至少我是基本上没有使用过,如果不是今天看到这里了,我都不知道 Tomcat 还能有 configtestversion 这两个参数。

    :doDebugshiftset _EXECJAVA=%_RUNJDB%set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%....java"if not ""%1"" == ""-security"" goto execCmdshiftecho Using Security Managerset "SECURITY_POLICY_FILE=%CATALINA_BASE%confcatalina.policy"goto execCmd:doRunshiftif not ""%1"" == ""-security"" goto execCmdshiftecho Using Security Managerset "SECURITY_POLICY_FILE=%CATALINA_BASE%confcatalina.policy"goto execCmd:doStartshiftif "%TITLE%" == "" set TITLE=Tomcatset _EXECJAVA=start "%TITLE%" %_RUNJAVA%if not ""%1"" == ""-security"" goto execCmdshiftecho Using Security Managerset "SECURITY_POLICY_FILE=%CATALINA_BASE%confcatalina.policy"goto execCmd

    上面这一段就是我们最常用的三种启动方式,从脚本上来看, debugrun 单纯的多设置了两个变量 _EXECJAVADEBUG_OPTS ,而 start 则是多了一个 TITLE 的判断。

    接着往下看,基本上就已经到了这个脚本的最底部,这里执行了一句话,也是核心的一句话:

    %_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

    _EXECJAVA 是我们刚才说的那个 java.exe ,然后是各种运行时参数和系统属性,最后面的 MAINCLASS ,也就是 org.apache.catalina.startup.Bootstrap ,接着是 CMD_LINE_ARGS ,这也是一个命令参数,就是 main 方法上的那个 args 参数,最后一个参数是 ACTION 也就是 start

    最后归根结底就是一句话,执行 Bootstrap 里面的 main 方法,别看这些个脚本写了一大堆,主要工作就是在校验环境配置以及一些基础系统设置和一些运行时参数的设置。

    4 小结

    脚本整体来讲不难,而且每段脚本上面都已经有了简单的英文注释,简明扼要的写清楚了这一段脚本在做什么,稍微了解一些基础的 DOS 命令,都可以进行阅读。

    至于其他的脚本可以大致浏览下,基本上兜兜转转最后还是会回到 catalina.bat 这个脚本,而在这个脚本中,最后肯定会执行 Bootstrap 里面的 main 方法。

    在 Windows 系统中,使用的是 bat 脚本,在 Linux 系统中,就会使用 sh 脚本,这个本质上没有什么大的差别,整体原理都是一样的,有兴趣的同学可以自己研究下 sh 脚本,就当学 shell 语法了。

    展开全文
  • 死磕Tomcat系列(3)——Tomcat如何做到一键式启停的在没有SpringBoot内嵌有Tomcat之前,我们都是将项目打为War包放在Tomcat的webapp目录下面,然后如果是Linux系统,运行命令start.sh、如果是Windows系统,运行命令...
    12e04c69adcb36207878c7a6fe171a05.png

    死磕Tomcat系列(3)——Tomcat如何做到一键式启停的

    在没有SpringBoot内嵌有Tomcat之前,我们都是将项目打为War包放在Tomcat的webapp目录下面,然后如果是Linux系统,运行命令start.sh、如果是Windows系统,运行命令start.bat以后就能启动起来并访问到页面。如果是想要停止运行只需要运行shutdown.sh或者shutdown.bat就能将程序停止起来,那么Tomcat是如何做到只需要一个命令就将所有容器启动起来呢?

    脚本分析

    start.sh和start.bat里面的内容相同,所以这里就主要分析start.sh的内容了。

    os400=falsecase "`uname`" inOS400*) os400=true;;esac# resolve links - $0 may be a softlink# PRG是脚本路径,如果当前脚本文件为软连接,则会解析出PRG真正文件所在的路径PRG="$0"while [ -h "$PRG" ] ; do # 判断是否为软连接 ls=`ls -ld "$PRG"` # 如果是软连接,输出中含有lin -> source的字符串 link=`expr "$ls" : '.*-> (.*)$'` # 模式匹配出源文件的路径 if expr "$link" : '/.*' > /dev/null; then # 正则匹配 /.* 这里expr会输出匹配个数,如果不为0,则说明$link包含目录 PRG="$link" else PRG=`dirname "$PRG"`/"$link" # 当不包含目录,说明软连接和源文件在同一目录 fidone# 获取脚本目录路径PRGDIR=`dirname "$PRG"`EXECUTABLE=catalina.sh# Check that target executable existsif $os400; then # -x will Only work on the os400 if the files are: # 1. owned by the user # 2. owned by the PRIMARY group of the user # this will not work if the user belongs in secondary groups evalelse if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then echo "Cannot find $PRGDIR/$EXECUTABLE" echo "The file is absent or does not have execute permission" echo "This file is needed to run this program" exit 1 fifi# 执行catalina.sh的start命令exec "$PRGDIR"/"$EXECUTABLE" start "$@"

    其实上面简单来说就做了两件事

    1. 拿到脚本的真正路径
    2. 执行catalina.sh的start命令

    而shutdown.sh和start.sh命令一样,只不过后面是执行catalina.sh的stop命令

    catalina.sh脚本

    脚本中重要的步骤有以下几个

    1. 设置两个重要的环境变量,CATALINA_HOME、CATALINA_BASE
    PRGDIR=`dirname "$PRG"`[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
    1. 设置CLASSPATH变量,这里注意,默认是没有setenv.sh文件的,可以自己新建一个并添加参数

    CLASSPATH=

    if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then

    . "$CATALINA_BASE/bin/setenv.sh"

    elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then

    . "$CATALINA_HOME/bin/setenv.sh"

    fi

    1. 将bootstrap.jar作为CLASSPATH变量传进去
    if [ ! -z "$CLASSPATH" ] ; then CLASSPATH="$CLASSPATH":fiCLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jarif [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.outfi
    1. 执行脚本参数,执行bootstrap.jar中的Bootstrap类中main方法,并传入参数start

    shift

    eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

    -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS""

    -classpath ""$CLASSPATH""

    -Djava.security.manager

    -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""

    -Dcatalina.base=""$CATALINA_BASE""

    -Dcatalina.home=""$CATALINA_HOME""

    -Djava.io.tmpdir=""$CATALINA_TMPDIR""

    org.apache.catalina.startup.Bootstrap "$@" start

    在上面脚本中我们可以看出最后执行的都是从Bootstrap的main方法作为入口的,所以我们打开Tomcat源码进去Bootstrap类中看它到底做了什么。

    启动类分析

    作为Tomcat的入口类,我们先看看Bootstrap中做了什么。这里只贴出main方法中重要的代码。

    //初始化类加载器并且将Catalina文件加载进内存中bootstrap.init();String command = "start";if (args.length > 0) { command = args[args.length - 1];}if (command.equals("startd")) { args[args.length - 1] = "start"; //调用Catalina.java的load方法 daemon.load(args); //调用Catalina.java的start daemon.start();} else if (command.equals("stopd")) { args[args.length - 1] = "stop"; //调用Catalina.java的stop daemon.stop();} else if (command.equals("start")) { daemon.setAwait(true); daemon.load(args); daemon.start(); if (null == daemon.getServer()) { System.exit(1); }} else if (command.equals("stop")) { daemon.stopServer(args);} else if (command.equals("configtest")) { daemon.load(args); if (null == daemon.getServer()) { System.exit(1); } System.exit(0);} else { log.warn("Bootstrap: command "" + command + "" does not exist.");}

    这里是根据脚本中传入的不同命令,调用Catalina不同的方法。由于我们主要分析的Tomcat如何做到一键式启停的,所以我们主要分析Catalina的start方法。

    在Catalina的satrt方法中我们看到了这一句

    getServer().start();

    随后经过Debug都是经过了Lifecycle的start方法,我们把Lifecycle的方法列出来

    public interface Lifecycle { public void addLifecycleListener(LifecycleListener listener); public LifecycleListener[] findLifecycleListeners(); public void removeLifecycleListener(LifecycleListener listener); public void init() throws LifecycleException; public void start() throws LifecycleException; public void stop() throws LifecycleException; public void destroy() throws LifecycleException; public LifecycleState getState(); public String getStateName(); public interface SingleUse { }}

    然后再看它的实现类,我们发现我们前面所讲的整体架构中的组件都实现了此类。而在它的子类LifecycleBase实现了start、init、stop等方法,并且里面都相应调用了startInternal、initInternal、stopInternal方法,这里我们如果对于设计模式了解的话,应该会想到这里运用了模板设计模式,抽象出所有子类的公有的代码,然后重新定义一个内部抽象方法,其子类实现自己的定制化的操作。

    在Server.xml中我们发现第一个层级也是Server,然后Catalina的satrt方法中第一个启动的也是Server。

    ce0261bd467fdd67c0034b4b15a7e90c.png

    上面表示了Tomcat所有模块的层级结构,只要是带有层级的结构,我们应该能够立马想到组合设计模式,从这个层级结构中我们能够得到模块之间的关系,有大有小,有内有外

    • 有大有小:大组件管理小组件,例如Server管理Service,Service管理连接器和容器
    • 有内有外:连接器控制对外的连接,而外层组件调用内层组件完成业务功能。即请求处理的过程是由外层组件驱动的。

    那么根据上面的两条,我们知道,有小才有大,有内才有外。这也就是整个层级的加载顺序,先加载小组件再加载大组件,先加载内层组件再加载外层组件。此时我们应该就明白了Tomcat是如何做到一键式启停的了。通过层级结构,加载的优先级。层层迭代进行启动。而停止和启动差不多。也是层层迭代进行停止。

    往期文章

    • 大公司程序员带你死磕Tomcat系列(一)——整体架构
    • 大公司程序员带你死磕Tomcat系列(二)——EndPoint源码解析
    • 大公司程序员带你死磕Tomcat系列(三)——Tomcat如何做到一键式启停的
    • 大公司程序员带你死磕Tomcat系列(四)——Tomcat中的类加载器
    • 大公司程序员带你死磕Tomcat系列(五)——容器

    持续更新,记得关注!持续更新,记得关注!

    展开全文
  • 进程管理12.1 进程概述在linux 中,每个执行的程序都称为一个进程,每一个进程都分配一个ID 号每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www 服务器每个进程都可能以两种方式存在的,...

    testkuaibao|软件测试自学公众号

    12. 进程管理

    12.1 进程概述

    在linux 中,每个执行的程序都称为一个进程,每一个进程都分配一个ID 号

    每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www 服务器

    每个进程都可能以两种方式存在的,前台与后台。所谓前台进程就是用户目前的屏幕上可以进行操作的,后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行

    一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,知道关机才结束

    进程与线程

    进程:就是正在执行的程序

    线程

    轻量级的进程

    进程有独立的地址空间,线程没有

    线程不能独立存在,它是由进程创建

    相对讲,线程耗费的CPU 和内存要小于进程

    12.2 进程的管理

    12.2.1 ps —查看进程

    ps 命令是用来查看目录前系统中正在执行的进程以及进程的执行情况,可以不加任何参数,显示详细的进程信息

    常见参数:

    ps -a :显示当前终端的所有进程信息

    ps -u :以用户的格式显示进程信息

    ps -x :显示后台进程运行的参数

    ps 显示的信息选项:

    字段

    说明

    PID

    进程识别号

    TTY

    终端机号

    TIME

    此进程所消耗CPU时间

    CMD

    正在执行的命令或进程名

    12.2.2 kill —终止进程

    kill/killall, 终止进程

    如果某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程,使用kill 命令可以来终止某个进程

    语法:kill 进程号

    如:

    kill 19231:终止进程号为19231的进程

    kill -9 19231:因为有些进程会捕捉某些信号,直接kill 会被系统阻塞掉,此时可以用“-9”来强制杀出

    killall:杀死同名的所有进程

    12.2.3 top —动态监控进程

    top 命令与ps 命令很相似。它们都用来显示正在执行的进程。top 与 ps 最大的不同之处,在于top在执行一段时间可以更新正在运行的进程

    监视特定用户

    top: 输入此命令,按回车键,查看执行的进程

    u: 然后输入“u”灰尘,再输入用户名,即可终止指定的用户

    top: 输入此命令,按回车键,查看执行的进程

    k: 然后输入“k”回车,再输入要结束的进程ID号,指定系统状态更新的时间

    top -d 10 : 指定系统更新进程的时间为10秒

    top 显示选项解释

    62b5f1326be58de9279dd10da3c9d79f.png

    1:52 ,表示系统启动了多久

    1 user ,用户数

    load average : 0.00 0.00 0.00 ,当前系统负载情况,一般来说,参数越小,系统运行的越轻松,当平均数>0.6时,系统就很紧张了。

    38 processes,进程数

    0 zombie , 僵尸进程数,相当于这个进程没有用了,还占用资源,比如父进程来不及收回子进程

    CPU states:99.3% idle ,闲置的CPU

    Mem,内存

    Swap,类似于虚拟内存

    13. 解压缩

    13.1 .tar.gz 解压缩

    Linux 下常见的压缩格式:.tar.gz 、 .zip  、 .gz 、 .bz2 、.tar.bz2

    本篇主要讲解 .tar.gz 和 .zip 的压缩格式

    13.1.1  .tar.gz 压缩

    .tar.gz 格式是先打包为 .tar 格式,再压缩为.gz 格式

    语法:tar -zxvf 压缩包.tar.gz文件

    命令参数详解:

    -c :建立归档

    -z:压缩为.tar.gz格式

    -v: 显示所有过程

    -f: 使用档案名字,必须项,最后一个参数,后面空格接文件名

    如:将test 文件(目录)压缩成 test.tar.gz 压缩包

    tar -zcvf test.tar.gz test

    13.1.2 .tar.gz 解压缩

    将test.tar.gz 进行解压缩

    tar -zxvf 压缩包名,.tar.gz

    命令参数详解:

    -x: 解归档

    -z: gzip格式

    -v:显示所有过程

    -f : 使用档案名字,必须项,最后一个参数,后面空格接文件名

    如:将 test.tar.gz 进行解压缩:

    tar -zxvf test.tar.gz

    13.2. zip格式压缩、解压缩

    zip 、unzip 以zip 和 unzip处理 .zip文件

    13.2.1 zip压缩—zip

    Zip命令的基本使用方法

    语法:zip[-r] 压缩后文件名 .zip 需要压缩的文件

    如:

    zip 压缩文件名  源文件

    压缩目录:

    zip -r 压缩文件名 源目录

    如:将 test 文件压缩成test.zip,注意使用 -r 参数 ,否则会生成一个空目录

    Zip -r test.zip test

    13.2.2 zip 解压缩 —unzip

    以unzip命令进行.zip文件的解压缩

    格式 : unzip 压缩文件

    如:将test.zip进行解压

    unzip test.zip

    14. 管道命令

     管道使用“|” 符号,可以在命令间建立管道,将第一个命令的输出作为后面命令的输入

    如:ll | grep abc

    管道前面的命令 ll 是显示当前目录下的文件,后面的命令 grep abc 是从列出的文件名中寻找含有abc 字符串的文件或者目录

    常见的管道符如下表所示:

    |

    命令1 | 命令2

    顺序执行多个命令,命令之前没有任何逻辑关系

    &&

    命令1&& 命令2

    逻辑与(类似编程语言中的短路与)

    命令1 正确执行,命令2才会执行

    命令1 未正确执行,则命令2不会执行

    ||

    命令1|| 命令2

    逻辑或(类似编程语言中的短路或)

    命令1未正确执行,则命令2才会执行

    命令2正确执行,则命令2不会执行

    14.1 管道命令的应用

    工作中常见应用:

    14.1.1 查找端口

    netstat -apn | grep 3306

    通过netstat -pna 显示所有端口占用信息,采用管道符号将输出作为后一个命令 grep的输入,如果查询到了则会显示占用3306 端口的 进程编号等信息,假设查找到的进程编号为5541,进一步杀掉进程:

    kill -9 5541

    14.1.2 查询进程

     ps -ef | grep tomcat

    通过ps -ef 显示所有进程信息,采用管道符号将输出作为后一个命令grep 的输入,如果查询到了则会显示包含 tomcat 字符串的进程信息,假设查找到的进程编号为5541,进一步杀掉进程:

    kill -9 5541

    来源:图文来自网络,如有侵权请联系删除

    觉得文章不错就点个好看呗,转发就更好了

    展开全文
  • linux启动tomcat服务

    2017-09-04 15:57:28
    linux下启动linux服务 首先进入tomcat主目录下的bin目录 1、直接启动:./startup.sh 2、作为服务启动:nohup ./startup.sh &(执行...动态的显示tomcat后台的控制台输出信息 区别 1、通过方式一、方式三所启动的
  • 问题: linuxTomcat shutdown无效 linux下关闭tomcat后,发现重新启动Tomcat后。...这时可能是项目中的后台线程或者socket依旧在执行把port号占用。 解决的方法: ①:能够输入命令:$netstat -pan...
  • Linux下运行tomcat

    2020-06-19 00:31:31
    Linux下运行tomcat ##linuxtomcat 启动 cd bin #进入tomcat目录 ./startup.sh 这个启动方式,没有后台日记 ... 这个启动方式,有后台日记(./catalina.sh run 如果执行这个,当你断了ssh,应用也随之关闭) ...
  • cd … 表示回退到上一级目录 ls 表示查看当前目录下的所有文件 我们的tomcat安装路径在usr\local\yzmis\下面找 例如你要关闭信誉质量考核系统所在的tomcat...如果要查看后台日志则进入logs目录下,再执行tail -f ca...
  • 讲一下查错,首先本地服务器部署一下,能访问测试页面说明部署成功,能访问项目证明项目没问题,如果是jar包,直接 java -jar 包名.jar 想要后台执行的可以百度,war包部署在docker里的镜像和普通tomcat是一样的方法....
  • 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctrl+c又或者关闭了ssh窗口,那么程序就会被终止。如何让程序在后台...
  • Java一键启动Linux上的tomcat服务器

    千次阅读 2017-09-29 17:15:58
    导致接口tomcat经常宕机,而且下班后,tomcat宕机了,还必须赶紧远程连接服务器重启,后来想了一个方法来解决这个问题:在我们的后台管理段,增加一个一键重启linux上的tomcat服务器的功能: 具体步骤如下: ...
  • 问题现象如题, 问题产生背景,该管理...搞了1个多小时,原来是tomcat/work/Catalina目录下对应管理后台目录的权限问题,tomcat是跑在www用户下的,这个管理后台目录,是属于root用户的。。。 执行命令: chown...
  • linux执行某个目录的程序 1. /var/lib/apache-tomcat6.0.35/startup (直接带目录执行)2. cd /var/lib/apache-tomcat6.0.35 然后 ./startup (用&...如果要后台执行,在后面加上& ...
  • Linux 后台运行jar包,不会随窗口关闭,一直运行 要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。 在linux...
  • Linux 服务端执行jar包

    2019-03-26 16:29:49
    java打包进行发布,有两种方式:war和jar,发布war需要tomcat,jar可直接执行发布;以下一demo举例 java -jar demo.jar ctrl+c中断程序或关闭控制台,程序退出 java -jar demo.jar & > &代表在后台...
  • 在工作中经常遇到项目发布的繁杂问题,要是有专业的运维测试人员还好,如果没有就无形中给...2、将war包上传到服务器上,执行启动tomcat的命令,运行项目。 缺点:需要输入一系列的命令,执行打包,上传包,对依赖的
  • 要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。 在linux系统中运行jar包主要有以下几种方式。 一、java -jar ...
  • 首先在linux系统下前台运行jar包的和window上一样的 java -jar demo-0.0.1-SNAPSHOT.jar 这么做方便做测试,看实时log报错,缺点:断开远程连接此进程会自动shutdown 所以部署的话我推荐使用后台运行进程,这样关闭...
  • Tomcat服务脚本

    千次阅读 2017-04-28 09:11:47
    linux中,通常,我们Tomcat是在后台运行的,并且是开机自动启动的。另外,也想配合我们通用的对服务的操作方式,如:service iptables start/stop/status,这是对防火墙服务的操作方式。那么tomcat服务的设置如何...
  • CentOS7安装tomcat

    2019-04-06 15:52:26
    二、上传Linux后台解压到/usr/local/tomcat8 (目录可以自己任意创建) 三、tar zxvf ****.tar.gz解压你上传的tomcat的包 四、执行:systemctl stop firewalld 关闭防火墙 五、打开网页输入...
  • 0x00 Linux基础 学习基本的linux命令操作,对于我们熟悉linux或者unix系统还是很有帮助的。 0x01 后台执行任务 & 丢进后台 ...示例1:java -jar start.jar & #运行start.jar 文件,...#后台执行run_tomcat.sh 0x0
  • tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题。一、现象描述在一次线上环境,...1、排查后台服务查看tomcat后台日志,发现日志正常打印,未发现异常信息;把要执行的S...
  • tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题。一、现象描述在一次线上环境,...1、排查后台服务查看tomcat后台日志,发现日志正常打印,未发现异常信息;把要执行的S...
  • linux相关命令

    2014-11-24 17:38:28
    linux系统相关命令 杀掉所有java进程 kill -9 java 查看后台日志 cd /usr/local/apache-tomcat-6.0.20/logs tail -f catalina.out tomcat安装路径: /usr/local/apache-tomcat-6.0.20/ tomcat启动和停止: 进入...
  • tomcat thread dump 分析

    2015-03-09 17:13:00
    前言 Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈... 后台系统一直是在黑盒运行, 除了能暂停一部分任务的执行, 根本无法知...
  • 利用 Linux 自带的 logrotate 工具来实现按天切割日志.下方已 centos 7 系统为例来实践讲解. ...每晚 cron 后台执行/etc/cron.daily/目录下的任务 这会触发/etc/cron.daily/logrotate文件,通常这...
  • linux环境:linux +tomcat8+ mysql+mybatis-plus+nginx(域名部署) 1、linux上配置好tomcat、java环境、安装nginx; 2、后台jar代码部署到home/work/client路径下,使用nohup java -jar 后台jar包名称 & ;...
  • crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond ...
  • 前言 Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈.... 后台系统一直是在黑盒运行, 除了能暂停一部分任务的执行, 根本无法知...
  • linux运行jar包

    2021-02-24 16:09:04
    要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。在linux系统中运行jar包主要有以下四种方式。 一、java -jar ...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

linuxtomcat后台执行

linux 订阅