作为一个javaer,遇到任何问题,先查一下java中的解决方案.地球上的许多事情,在java中都能找到完美的解决方案.之前搭建ftp服务器使用的是vsftpd,现在可以把它卸掉了,它以服务的形式运行,并且它包含很多我所不知道的东西.
wget+tar-zxvf下载解压ftpserver,进入bin目录,更改ftpd.sh,添加JAVA_HOME变量.
输入指令:./ftpd.sh res/conf/ftpd-typical.xml & 后台运行.
这里要注意,ftpd.sh中有一句cd $FTPD_HOME,这就使得这个程序的当前目录变成了$FTPD_HOME.如果ftpd-typical.xml路径不对,会一直报"文件未找到"异常.
ftpd.sh需要提供配置文件名称作为参数,它的行为取决于ftpd.xml的配置,一般情况下,使用ftpd-typical已经足够了.如果不知道ftpd.xml怎么配置,可以参考ftpd-full.xml,这个文件列出了所有的参数.
默认情况下,用户名和密码都是admin,端口号为2121.ftp的默认端口号为21.http默认端口号为80.tomcat默认端口号为8080,因为1024以内的端口号是不允许随便占用的,而1024以后的却可以.所以,要想占用1024以内的端口号,就要通过sudo命令.
默认情况下,user.properties中的用户密码是md5加密的,要想不加密,需要更改ftpd-typical.xml.匿名用户对于服务器上的文件是只读的,这可以在user.properties中设置权限.
问题到这里并没有结束,当退出shell之后,ftpd也就跟着停止运行了.这个问题就是:在linux shell关闭后,程序如何才能继续运行?
(1)方案一
ctrl+z暂停程序,bg [作业号]将程序后台运行.这一步相当于使用[命令名]&运行程序.
对于后台运行的程序,它只是不占用shell了,但它仍然是shell的子程序,shell一死,它仍然要跪.所以需要使用命令
disown -h %1
来把这个程序"不属于"shell.
bg是把程序放到后台,fg是把程序调到前台.
用jobs命令查看当前作业.jobs -l查看作业列表.
当使用disown把程序解除之后,可以通过ps -e | grep bash 命令查看这个程序,可以kill之.
(2)方案二
SIGHUP是linux中信号的一种,表示hang up(挂起)信号.当shell收到SIGHUP信号时,shell的儿子们也会收到这个信号.
nohup ./haha.sh arg1 arg2 arg3 &
默认情况下,haha.sh运行过程中的一切输出都写入到了~/nohup.out文件中,注意要让nohup在后台运行,所以加上"&".
然后ps -ex | grep haha,就可以看见这个程序了.
关闭当前shell,重新打开一个,仍旧ps -ex | grep haha,发现还在运行着.
(3)方案三
使用screen/tmux
(4)方案四
./haha.sh&!