一 通常情況下,我門在同一台服務器拷貝數據最常用的命令便是cp,如果要在不同服務器之間拷貝的話可以用scp命令。
現在有兩台服務器,需要把A服務器上的文件遷移到B服務器上,因為文件太大,不能一直開着shell,我們需要把scp后台運行,如果我們直接在scp命令后加入 & 的話,關閉shell會話窗時,復制就回停止,有不同的方法能讓scp后台運行,下面我說下我用到的
我一開始的思路是 配置了 A免密登陸到B,在 scp后加入&實現,發現這樣不行,在關閉終端后,scp會停止
scp -r /data/fileupload/ 30.0.218.1:/upload & 發現不行
這時想到shell腳本
然后執行
# nohup bash scp.sh &
這時關閉shell會話窗,重新打開;一個會話窗,發現scp進程還在
用 df -h 查看磁盤使用情況 ,發現一只在增加
其中遇到一個問題:
二
在使用nfs共享時候,卸載發現
umount.nfs: /mydata: device is busy
[root@localhost /]# umount /data/
umount.nfs: /mydata: device is busy
查看占用進程號:
[root@localhost /]# fuser -m -v /data/
用戶 進程號 權限 命令
/mydata/: root 41331
www 41223 ..c.. su
將上面的進程kill掉,再刪除掛載。
[root@localhost /]# kill -9 41331 41223
[root@localhost /]# umount /data
[root@localhost /]#
另一種強制卸載方法
# umount -l /data
注釋:
-m參數表明指定的路徑是一個掛載點顯示所有使用指定文件系統的進程,后面可以跟掛載點,-v參數給出詳細的輸出
用下面這個命令可以將占用目錄/dsg所有進程給kill掉:
$ fuser -m –k /data
這樣umount: /data: device is busy這個問題就可以解決.
同時fuser 可以用來查找哪些進程正在使用指定的端口(network port).
fuser通常被用在診斷系統的“resource busy”問題,通常是在你希望umount指定的掛載點得時候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的進程的時候,你可以使用-k option。
# fuser –k /path/to/your/filename
這時fuser會向所以正在使用/path/to/your/filename的進程發送SIGKILL。如果你希望在發送之前得到提示,可以使用-i 選項。
# fuser –k –i /path/to/your/filename