一、
Linux shell - `dirname $0` 定位到运行脚本的相对位置
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。
在/home/admin/test/下新建test.sh内容如下:
cd `dirname $0`
echo `pwd`
然后返回到/home/admin/执行
sh test/test.sh
运行结果:
/home/admin/test
这样就可以知道一些和脚本一起部署的文件的位置了,只要知道相对位置就可以根据这个目录来定位,而可以不用关心绝对位置。这样脚本的可移植性就提高了,扔到任何一台服务器,(如果是部署脚本)都可以执行
问题:
经常在shell脚本中,看到有"2>&1"字样的写法,到底这是什么意思呢?
解决办法:
1。这里的1和2指的是文件描述符。
0:stdin
1:stdout
2:stderr
2。 ">"则是重定向符号。
“2>&1”的意思是:将输出到标准出错处理的信息,发送到标准输出中。
3。“2>&1”的记忆:
如果只有“2>1”,看起来像是将文件2的内容重定向到1文件中去了,加上"&",则表示“&”之后跟着的数字是文件描述符。
java -jar 与nohup的区别
经常会遇到这样一个问题,打个jar包,测试或者上线生产,于是乎面临的选择来了,java –jar or nohup?
下面我来扒一扒:
一、 java -jar a.jar &
直接启动jar文件,在当前会话进程中开启一个子进程来运行程序,这个子进程会随着会话进程的结束而结束。
这种情况适合短时间测试用。
二、 nohup java -jar a.jar&
先交代一下名词:
hangup (挂断),终端退出时会发送 hangup 信号来通知其关闭所有子进程。
nohup(不挂断,忽略挂断信号)
nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时
放入后台运行,也可用">filename2>&1"来更改缺省的重定向文件名。
这种情况适合在生产环境长时间运行。
---------------------------------------------------------------------------------------------------
Linux 运行jar包命令如下:
方式一:
- java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
方式二
- java -jar XXX.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
方式三
nohup java -jar XXX.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
方式四
- nohup java -jar XXX.jar >temp.txt &
解释下 >temp.txt
command >out.file
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
可通过jobs命令查看后台运行任务
- jobs
那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要 fg + 编号即可。
- fg 23
查看某端口占用的线程的pid
netstat -nlp |grep :9181