在平常工作中要经常把打包好的程序发布到linux机器中,有时候需要更改包内的文件,特别是对jar包中的配置文件进行更改后还要重新打包上传。当然也有别的替代方式。
在这介绍一种通过vim命令不解压压缩包直接更改文件内容的方法,以log4j.xml文件为例:
cd到jar包所在目录,运行命令 vim xxx.jar
1
$ vim xxx.jar
输入如下查找命令查找文件
1
/log4j.xml
光标移动到该文件上之后敲回车,进入编辑界面
更改文件后,使用vim命令保存并退出即可
在平常工作中要经常把打包好的程序发布到linux机器中,有时候需要更改包内的文件,特别是对jar包中的配置文件进行更改后还要重新打包上传。当然也有别的替代方式。
在这介绍一种通过vim命令不解压压缩包直接更改文件内容的方法,以log4j.xml文件为例:
cd到jar包所在目录,运行命令 vim xxx.jar
1 | $ vim xxx.jar |
输入如下查找命令查找文件
1 | /log4j.xml |
光标移动到该文件上之后敲回车,进入编辑界面
更改文件后,使用vim命令保存并退出即可
启动容器
1 | $ docker run --name gg.php -p 2120:2120 -p 2121:2121 -p 2123:2123 -d \ |
如果步骤2和3都成功后执行下面的命令(记得将时间更改为北京时)
1 | $ docker exec -it gg.php /bin/bash |
安装php关于postgresql数据库的依赖
1 | $ docker exec -it gg.php /bin/bash |
安装workerman依赖
1 | $ docker exec -it gg.php /bin/bash |
有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法。
以淘宝npm 镜像举例:
临时使用
1 | $ npm --registry https://registry.npm.taobao.org install express |
持久使用
1 | $ npm config set registry https://registry.npm.taobao.org |
配置后可通过下面方式来验证是否成功1
$ npm config get registry
或者1
$ npm info express
1 | $ npm install -g cnpm --registry=https://registry.npm.taobao.org |
在shell中,每个进程都和三个系统文件 相关联:标准输入stdin,标准输出stdout、标准错误stderr,三个系统文件的文件描述符分别为0,1、2。所以这里2>&1 的意思就是将标准错误也输出到标准输出当中。
echo log > /dev/null 2>&1
echo log > /dev/null 2>&1
的含义:
echo "123" > /home/123.txt
1 > /dev/null 2>&1
语句含义:
cmd >a 2>a
和 cmd >a 2>&1
为什么不同?
cmd >a 2>a
:stdout和stderr都直接送往文件 a ,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。 cmd >a 2>&1
:stdout直接送往文件a ,stderr是继承了FD1的管道之后,再被送往文件a 。a文件只被打开一遍,就是FD1将其打开。cmd >a 2>a
相当于使用了FD1、FD2两个互相竞争使用文件 a 的管道。cmd >a 2>&1
只使用了一个管道FD1,但已经包括了stdout和stderr。cmd >a 2>&1
的效率更高。 下面通过一个例子来展示2>&1有什么作用:1
2
3$ cat test.sh
t
date
test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。date则能正确执行,并且输出时间信息,默认输出到stdout。1
2
3
4$ ./test.sh > test1.log
./test.sh: line 1: t: command not found
$ cat test1.log
Wed Jul 10 21:12:02 CST 2013
可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。1
2
3
4$ ./test.sh > test2.log 2>&1
$ cat test2.log
./test.sh: line 1: t: command not found
Tue Oct 9 20:53:44 CST 2007
这次,stderr和stdout的内容都被重定向到log文件中了。
实际上, > 就相当于 1> 也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出了,那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。如果只想重定向标准错误到文件中,则可以使用2> file。
对于&1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了,其中0 表示键盘输入 1表示屏幕输出 2表示错误输出,把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
command >out.file 2>&1 &
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出,
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
可以试试
ls 2>1
ls xxx 2>1
ls xxx 2>&1
ls xxx >out.txt 2>&1
ls xxx 1>out.txt 2>&1
,重定向符号>默认是1,错误和输出都传到out.txt了。为何2>&1要写在后面?
command > file 2>&1
command 2>&1 >file
$ java -jar xx.jar
当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。
$ java -jar xx.jar &
窗口不锁定,&代表在后台运行,当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
$ nohup java -jar xx.jar &
窗口不锁定,窗口关闭时,程序仍然运行,nohup意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。
当用nohup命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。$ nohup java -jar xx.jar > temp.log &
可通过jobs
命令查看后台运行任务,执行jobs
命令后,就会列出所有后台执行的作业,并且每个作业前面都有个编号。
如果想将某个作业调回前台控制,只需要fg + 编号即可。
安装rpmforge-releae
去某个地址)下载rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
,然后执行命令rpm -Uhv rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
安装curlftpfs
$ yum install curlftpfs
挂载
将挂载后的地址先创建好,例:
1 | $ mkdir -p /mod/t639/gmf |
卸载$ fusermount -u /mod/t639/gmf
复杂的命令$ date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
简单的命令
执行top
,左上角就是开机时间