今天在使用GT4時(shí),采用
globus-start-container啟動(dòng)容器和globus-stop-container終止容器時(shí)遇到一些問題,現(xiàn)歸納如下:
1.首先采用
globus-start-container -nosec啟動(dòng)容器,這個(gè)命令在運(yùn)行GT4例子程序中會(huì)經(jīng)常用到。
2.然后使用globus-stop-container終止容器。
但是發(fā)現(xiàn),如果我采用globus-stop-container命令終止容器的使用,會(huì)出現(xiàn):connection refused的錯(cuò)誤。
另外一個(gè)窗口采用
globus-start-container -nosec啟動(dòng)容器的時(shí)候,卻說Address in use。
百思不得其解,最后參考Globus網(wǎng)站,并通過自己的實(shí)踐,終于解決了這個(gè)問題:
1.首先關(guān)于
globus-start-container,globus.org上是這樣描述的:
Starts a standalone container. By default a secure container is started on port 8443 and is accessible via HTTPS. On successful startup a list of services will be displayed on the console. By default the non secure (HTTP) container is started on port 8080.
2.如果為
globus-start-container加上-nosec參數(shù)時(shí),即使用
globus-start-container -nosec命令時(shí)
Starts a non secure (HTTP) container. Please note that this option only disables transport security. Message security still can be used.
3.然后關(guān)于globus-stop-container,globus.org上是這樣描述的:
Stops a standalone container. By default this command will attempt to stop a container running on
localhost:8443 and perform a
soft shutdown.
這樣就可以明白為什么采用
globus-start-container -nosec是在8080端口啟動(dòng)的container,而globus-stop-container要去8443端口關(guān)閉container,就會(huì)出現(xiàn)connection refused的錯(cuò)誤,而且container也沒有真正關(guān)閉。
而這個(gè)時(shí)候再次去啟動(dòng)container時(shí),因?yàn)樯洗蔚腸ontainer沒有關(guān)閉,仍然回占用它所使用的端口,所以就會(huì)出現(xiàn)address in use的錯(cuò)誤了。
所以在一般情況下,直接采用Ctrl-C關(guān)閉container是一個(gè)好方法。
如果要想通過globus-stop-container來關(guān)閉container的話,在啟動(dòng)的時(shí)候需要采用
globus-start-container不加-nosec參數(shù)。
在使用globus-stop-container來關(guān)閉container時(shí)還要注意一個(gè)問題,就是關(guān)于權(quán)限問題。
By default globus-stop-container
must be executed with the same credentials as the container it is running with. If the ShutdownService or the container is configured with separate private key and certificate files (usually /etc/grid-security/containercert.pem
and /etc/grid-security/containerkey.pem
) do the following to stop the container:
$ grid-proxy-init -cert /etc/grid-security/containercert.pem \
-key /etc/grid-security/containerkey.pem \
-out containerproxy.pem
$ setenv X509_USER_PROXY containerproxy.pem
$ globus-stop-container
$ unsetenv X509_USER_PROXY
$ rm containerproxy.pem
上面這段話的含義是globus-stop-container使用和container一樣的證書來執(zhí)行該命令,這里使用
containercert.pem和containerkey.pem來生成一個(gè)containerproxy.pem,最后使用這個(gè)代理證書來關(guān)閉
container。如果你遇到說找不到/tmp/x509up-uuid(uid是你用來執(zhí)行g(shù)lobus-stop-container的用戶的uid)
文件的情況,可以試圖采用上面的方式來解決這個(gè)問題。