jar 命令详解

jar 命令详解  

jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar。它的运行需要用到 JDK 安装目录下 lib 目录中的 tools.jar 文件。不过我们除了安装 JDK 什么也不需要做,因为 SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 放到 CLASSPATH 中。使用不带任何的 jar 命令我们可以看到 jar 命令的用法如下:


jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:

-c 创建新的 JAR 文件包

-t 列出 JAR 文件包的内容列表

-x 展开 JAR 文件包的指定文件或者所有文件

-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)

特别注意,在参数的下达中, c/x/t/u 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f 指定 JAR 文件名,通常这个参数是必须的

请留意,在 f 之后要立即接档名喔!不要再加参数!
   例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
   『 tar -zcvPf tfile sfile』才对喔!

-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
–exclude FILE:在压缩的过程中,不要将 FILE 打包!

-m 指定需要包含的 MANIFEST 清单文件

-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快

-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数

[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数

[manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数

[-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。  

文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。

 

下面举一些例子来说明 jar 命令的用法:

1) 压缩jar -cvf test.jar test

2) 解压jar -xvf test.jar test

 

 

范例:
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/” from member names』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N “2005/06/01″ -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar –exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nohup java -jar命令是在Linux系统中运行Java程序的命令。其中,nohup表示不挂断地运行命令,即使终端关闭也不会停止程序的运行;java表示运行Java程序;-jar表示运行一个打包成jar文件的Java程序。 具体来说,nohup java -jar命令可以在后台运行一个Java程序,而不会受到终端关闭等操作的影响。这对于需要长时间运行的程序非常有用,比如服务器端的应用程序。 需要注意的是,nohup java -jar命令需要在Linux系统中使用,而且需要安装Java环境。同时,需要将Java程序打包成jar文件才能使用该命令运行。 ### 回答2: nohup java -jar命令是一个常用的命令,用于在后台运行Java应用程序。它的作用是让Java应用程序在用户退出登录后继续运行,并且不受挂起信号的影响。 nohup命令是词组“no hang up”的缩写,表示不挂断。nohup命令后紧跟着的是要在后台运行的命令,本例中是java -jar命令。这个命令指定使用Java虚拟机(JVM)来运行一个以jar包形式打包的Java应用程序。 使用nohup java -jar命令有很多好处。首先,它可以让Java应用程序在后台持续运行,即使您退出了登录。其次,它可以防止Java应用程序被终止,即使系统发送了中断信号或挂起信号。此外,nohup命令还会将输出信息保存到一个文件中。默认情况下,该文件名为nohup.out,但是您可以使用重定向运算符(>)将它重定向到其他文件。 举个例子,如果您想在Linux系统上运行一个名为myapp.jar的Java应用程序,您可以使用以下命令: nohup java -jar myapp.jar & 此命令将启动myapp.jar并将其放在后台运行,同时也将输出信息保存到nohup.out文件中。要停止该应用程序,请使用kill命令。 总之,nohup java -jar命令使得Java应用程序可以在后台持续运行,并且不会被系统中断。它是一个非常有用的命令,可以为Java开发者提供方便和保障。 ### 回答3: nohup java -jar命令是Linux系统中常用的命令,它可以让我们在后台运行Java应用程序。下面对该命令进行详细解析: 1. nohup命令 nohup是No Hang Up的缩写,意思是不挂断。它的作用是让我们在后台运行命令时,即使断开终端连接,命令还是能够继续运行,直到执行完毕。 2. java -jar命令 java -jar命令是运行Java应用程序的命令,其中-jar参数表示运行一个打包的Java应用程序。使用该命令可以忽略classpath环境变量和-classpath命令行选项,方便我们打包和运行Java应用程序。 3. 组合使用 nohup java -jar命令的组合使用,可以让我们在后台运行Java应用程序,且即使断开终端连接,应用程序也能够继续运行。使用该命令时,需要指定Java应用程序的jar包路径,如下所示: nohup java -jar /path/to/app.jar & 其中,&表示将命令放入后台运行。 除了上述常见用法外,nohup java -jar命令还可以搭配其他命令使用,如结合grep命令对Java应用程序输出的日志进行过滤,或者使用tee命令将日志保存到文件中。 总之,nohup java -jar命令是在Linux系统中常用的命令,它能够在后台运行Java应用程序,并且即使断开终端连接,应用程序也能够继续运行,非常方便实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值