Linux运行java的Jar文件
前提:操作系统配置好相关的JDK环境
一. linux下运行jar包的命令
1、java -jar xxxxx.jar // 当前xshell窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
2、java -jar xxxxx.jar & //当前shell窗口不被锁定,但是当窗口关闭时,程序中止运行。
3、nohup Java -jar xxxxxx.jar & //意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
nohup
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
nohup 是 no hang up 的缩写,就是不挂断的意思。
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
nohup和&的区别
& : 指在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响它的运行;
二.关闭jar命令
1.查看正在运行中的PID: ps -ef | grep java(jar文件名)
2. 通过PID关闭进程:kill -15 4834(进程id) kill、 -9 进程id
-9 表示强制关闭程序 不建议使用 可能导致数据不正确 不建议使用
-15 表示拒绝新线程(任务)创建 当前正在运行的线程执行完之后再关闭程序 建议使用
ps -ef | grep 命令详解
一.命令详解
ps -ef | grep jar
ps 命令的作用是显示进程信息的;
| 符号,是个管道符号,表示ps 和 grep 命令同时执行;
grep 命令是查找(Global Regular Expression
Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;
ps命令有一些参数:
-e : 显示所有进程
-f : 全格式
-h : 不显示标题
-l : 长格式
-w : 宽输出
a :显示终端上的所有进程,包括其他用户的进程。
r :只显示正在运行的进程。
u :以用户为主的格式来显示程序状况。
x :显示所有程序,不以终端机来区分。
二、命令执行结果
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
root 2649 1 0 Jun28 ? 03:53:28 java -jar a.jar
root 19997 19712 0 10:24 pts/0 00:00:00 grep --color=auto jar
列序号 列含义 列含义说明
1 UID 用户标识ID
2 PID 进程ID
3. PPID 父进程ID
4 C CPU占用率
5 STIME 进程开始时间
6 TTY 启动此进程的TTY(终端设备)
7 TIME 此进程运行的总时间
8 CMD 完整的命令名(带启动参数)
linux 删除文件的几种方式 基本命令和快速删除命令
1. 文件删除的几种方式
在 Linux 系统中删除文件,最常用的命令就是 rm 命令。这个命令相信大家都已经很熟悉了,我们来简单回顾一些 rm 命令的例子。
$ rm -f testfile
-f 选项在上面的命令中,表示将在不要求确认的情况下强行删除文件。
$ rm -rf testdirectory
这个命令将删除名为 testdirectory 的目录以及该目录中的所有内容(使用的 -r 选项是递归删除文件)。
而删除目录,我们还有另一个命令,那就是 rmdir ,但是它只有在目录为空时才会删除该目录。
$ rmdir testdirectory
现在我们看看在 Linux 中删除文件的一些其它不同方法。
我最喜欢的方法之一是使用 find 命令,再进行删除操作。find 命令是一个非常方便的工具,可用于根据文件的类型、大小、创建日期、修改日期和更多不同的条件来搜索文件。
我们来看一个 find 命令使用 -exec 来调用 rm 命令的例子。
$ find /test -type f -exec rm {} \;
上述命令将删除 /test 目录中的所有文件。首先 find 命令将查找目录中的所有文件,然后对于每个搜索结果,它会执行 rm 命令。
我们再看看可以与 find 命令一起使用的一些不同方法来删除文件。
$ find /test -mtime +7 -exec rm {} \;
在上述示例中,find 命令将搜索 /test 目录中 7 天前修改过的所有文件,然后删除每个文件。
$ find /test -size +7M -exec rm {} \;
上述示例中,将搜索目录 /test 目录中所有大于 7M 的文件,然后再删除它们。
在以上我们列出来的所有 find 命令示例中,都会为找到的每个文件调用 rm 命令。例如,在上面的最后一个 find 命令中,如果结果中有 50 个大于 7M 的文件,那么将调用 50 次 rm 命令删除文件。而这样的操作将需要花费更长的时间。除了在 find 中借助 -exec 参数调用 rm 命令外,还有一个更好的选择,那就是使用 -delete 选项。比如:
$ find /test -size +7M -delete
达到的效果与上一条命令一样。
2. 删除巨量文件时用什么命令最快?
首先借助一个简单的 bash for 循环创建 50 万个文件。
$ for i in $(seq 1 500000); do echo testing >> $i.txt; done
上述命令中,将在当前工作目录中创建 50 万个 txt 文件,名称从 1.txt 到 500000.txt,每个文件都包含 testing 的文本内容,因此文件大小至少在几千字节的范围。
在创建了 50 万个文件后,我们将尝试使用多方式来删除它们,看看哪种方式删除巨量文件速度最快。
Round 1:rm 命令
首先让我们使用简单的 rm 命令,同时我们使用 time 命令来计时。
$ time rm -f *
-bash: /bin/rm: Argument list too long
real 0m11.126s
user 0m9.673s
sys 0m1.278s
我们可以看到 rm 命令的执行结果是 Argument list too long ,这意味着该命令没有完成删除,因为给 rm 命令的文件数量太大而无法完成,所以它直接就躺平罢工了。
不要注意 time 命令显示的时间,因为 rm 命令没有完成它的操作,time 命令只管显示你命令执行了多长时间,而不关心命令的最终结果。
Round 2:使用 -exec 参数的 find 命令
现在让我们使用我们之前看到的带有 -exec 参数的 find 命令。
$ time find ./ -type f -exec rm {} \;
real 14m51.735s
user 2m24.330s
sys 9m48.743s
从我们使用 time 命令得到的输出可以看出,从单个目录中删除 50 万个文件需要 14 分 51 秒。这是相当长的时间,因为对于每个文件,都会执行一个单独的 rm 命令,直到删除所有文件。
Round 2:使用 -exec 参数的 find 命令
现在让我们使用我们之前看到的带有 -exec 参数的 find 命令。
$ time find ./ -type f -exec rm {} \;
real 14m51.735s
user 2m24.330s
sys 9m48.743s
从我们使用 time 命令得到的输出可以看出,从单个目录中删除 50 万个文件需要 14 分 51 秒。这是相当长的时间,因为对于每个文件,都会执行一个单独的 rm 命令,直到删除所有文件。
Round 3:使用 -delete 参数的 find 命令
现在让我们通过在 find 命令中使用 -delete 选项来测试消耗的时间。
$ time find ./ -type f -delete
real 5m11.937s
user 0m1.259s
sys 0m28.441s
删除速度大大提高,只用了 5 分 11 秒!当你在 Linux 中删除数百万个文件时,这是速度的惊人改进。
Round 4:Perl 语言
现在让我们看看使用 Perl 语言删除文件是如何工作的,以及它与我们之前看到的其他删除方式相比的速度。
$ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
real 1m0.488s
user 0m7.023s
sys 0m27.403s
从结果可以看出,Perl 只用了大约 1 分钟就删除了该目录中的 50 万个文件,与我们之前看到的其他 find 命令和 rm 命令相比,这个速度非常之快!
但是,如果您有兴趣在使用 Perl 时用到更复杂的选项,则需要对 Perl 正则表达式有一定的了解。
Round 5:rsync 命令
还有一种较少使用且鲜为人知的方法可用于删除文件夹内的大量文件,这种方法正是我们著名的工具 rsync ,它的基本用法是用于在 Linux 中的两个本地和远程位置之间传输和同步文件。
现在我们来看看如何使用 rsync 命令的来删除文件夹内所有文件。其实很简单,我们可以通过将具有大量文件的目标目录与空目录进行同步来实现删除的操作。
在我们的例子中, /test 目录(目标目录)有 50 万个文件,我们再创建一个名为 blanktest 的空目录(源目录)。现在,我们将在 rsync 命令中使用 -delete 选项,这将删除目标目录中的所有源目录中不存在文件。
$ time rsync -a --delete blanktest/ test/
real 2m52.502s
user 0m2.772s
sys 0m32.649s
可以看到,仅用 2 分钟 52 秒就完成删除。
因此与 find 命令相比,如果您想清空包含数百万个文件的目录,使用 rsync 命令会更好。
3. 小结
下表总结了 Linux 中采用不同方式删除 50 万个文件的速度,方便大家参考。
命令 | 花费时间 |
rm 命令 | 无法删除大量文件 |
使用 -exec 参数的 find 命令 | 15分 |
使用 -delete 参数的 find 命令 | 5 分 |
Perl | 1 分钟 |
rsync 命令 | 3分 |
更多推荐
所有评论(0)