日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux中后台执行scp

發布時間:2023/12/1 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中后台执行scp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在一臺遠程機器上scp一個大文件,需要大半天才能完全down下來,用xshell工具執行完命令之后還不能關閉,否則的話就停止了,我的本本還不能一直放這開xshell。就想到nohup,但是scp命令輸入密碼是提示的,不能寫道命令,經過一番搜索重要找到了一個好辦法:

下面是接受不輸入密碼的scp:

?最近在編寫定時自動執行的shell腳步中遇到一個問題。在該腳步中,需要使用scp命令將本地的文件復制到另一臺機器中備份。但通常執行scp命令后都需要輸入用戶密碼,這樣在定時自動執行的shell腳步中就不適用了。
???
本人的第一直覺就是建立無密碼用戶,在scp命令中使用該用戶就不需要輸入用戶密碼了。
???
以下為了討論方便,我們將執行scp命令的機器稱為Clientscp命令操作的遠端機器稱為Server
???
首先,我通過以下命令將機器Serverroot的密碼刪除,即使root變為無密碼用戶。
??????? [root@Server root]# passwd -d root
??????? Removing password for user root.
??????? passwd: Success
??????? [root@Server root]#
???
為了確認root已經變為無密碼用戶,登錄試試。
??????? Red Hat Linux release 8.0 (Psyche)
??????? Kernel 2.4.18-14 on an i686

??????? Server login: root
??????? Last login: Fri Sep 14 16:40:08 on tty1
??????? [root@Server root]#
???
確實root登錄時已經不需要密碼了。
???
然后,我們從機器Client復制一個文件到機器Server
??????? [root@Client root]# scp -p text root@192.168.3.206:/root
??????? root@192.168.3.206's password:???????????????????????? <--
直接輸入回車
??????? Permission denied, please try again.?????????????????? <--
被拒絕
??????? root@192.168.3.206's password:???????????????????????? <--
輸入任意字符
??????? text???????????????? 100% |**************************|??? 19?????? 00:00
??????? [root@Client root]#
???
從測試結果可知,即使root變為無密碼用戶,scp命令在執行時也會提示輸入密碼。更奇怪的是在提示輸入密碼時,直接輸入回車被拒絕了。但輸入其它任意字符后輸入回車確認就通過認證了。
???
后來在Internet中查找相關資料,有資料[1]介紹在兩臺機器的兩個用戶之間建立安全的信任關系后,可實現執行scp命令時不需要輸入用戶密碼。我根據該資料介紹的方法測試成功了。
???
以下是在機器Clientroot和機器Serverroot之間建立安全信任關系的步驟:
??? 1.
在機器Clientroot用戶執行ssh-keygen命令,生成建立安全信任關系的證書。
??????? [root@Client root]# ssh-keygen -b 1024 -t rsa
??????? Generating public/private rsa key pair.
??????? Enter file in which to save the key (/root/.ssh/id_rsa):
??????? Enter passphrase (empty for no passphrase):??????????? <--
直接輸入回車
??????? Enter same passphrase again:?????????????????????????? <--
直接輸入回車
??????? Your identification has been saved in /root/.ssh/id_rsa.
??????? Your public key has been saved in /root/.ssh/id_rsa.pub.
??????? The key fingerprint is:
??????? 49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@Client
??????? [root@Client root]#
???
注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。
???
上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶家目錄的.ssh子目錄中。
??? 2.
將公鑰證書id_rsa.pub復制到機器Serverroot家目錄的.ssh子目錄中,同時將文件名更換為authorized_keys
??????? [root@Client root]# scp -p .ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys
??????? root@192.168.3.206's password:????????? <--
輸入機器Serverroot用戶密碼
??????? id_rsa.pub?????????? 100% |**************************|?? 218?????? 00:00
??????? [root@Client root]#
???
在執行上述命令時,兩臺機器的root用戶之間還未建立安全信任關系,所以還需要輸入機器Serverroot用戶密碼。
???
經過以上2步,就在機器Clientroot和機器Serverroot之間建立安全信任關系。下面我們看看效果:
??????? [root@Client root]# scp -p text root@192.168.3.206:/root
??????? text???????????????? 100% |**************************|??? 19?????? 00:00
??????? [root@Client root]#
???
成功了!真的不再需要輸入密碼了。
上面載自
http://www.lslnet.com/linux/dosc1/30/linux-238181.htm.

?最后寫了一個簡單的shell

[root@usboss bakup]# more aa.sh
scp root@10.130.38.233:/home/channel/exp_boss_20090626.dmp.gz .

然后再后臺執行

nohup? bash? aa.sh &

ok 解決問題,ls 幾下發現文件一直在增大 關門shell然后再打開,正常的在傳輸。

第二天來之后,發現偌大的一個文件都down下來了,一切ok!

×××××××××××××××××××××××××××××××××××××××××

今天在網上偶然看到一個不錯的建議。先更新一下:

以前在使用nohup comd & 轉為后臺執行時遇到的最大問題就是scp為提示性命令,不能使用一句命令完成,所以使用讓兩臺機器建立信任,而使其不用輸入密碼。這樣信任機制的建立使步驟復雜了。現在有一種方法可以使在前臺運行的命令變為后臺,這樣原來scp命令繼續用提示方式輸入,然后在使用前臺變后臺的方法使其轉化為后臺,對本文所要解決的問題是一個不錯的解決辦法。(哈哈 其實任何問題都可以分為若干步驟,這些步驟的解決又可以借鑒其他問題中的步驟,這樣就能夠提到我們解決問題的能力。ps:想起了《初中生閱讀》上的一篇文章中的一句話:我們吃飯不是為了變成米粒,我們喝水不是為了變成水珠。當時讀的時間特別有感覺,在這我也使用一下,我們把解決scp后臺的執行這個問題記錄下來,并形成博客,其實長期目標、根本目的不是為了記住這個問題,而是記住解決這個問題經過了那些步驟,以后在遇到某個步驟的時間,我可以以這個問題為媒介迅速完成,提高解決問題的能力。這才是根本目的。)

利用kill命令轉后臺執行
先用ps -a找到進程號,再用sudo kill -stop procNumber,將進程暫停。然后再用jobs查看一下要轉到后臺的進程,找到它的job號,最后用bg jobNumber將其轉到后臺。大概就像這樣:
ps -a
PID? TTY?????? TIME? CMD
6729 pts/0??? 00:00:00 mystar

sudo kill -stop 6729

jobs
[2]+? Stopped??????? sudo mystar

bg 2
之后可以用fg jobNumber把進程調到前臺來。

轉載于:https://www.cnblogs.com/xd502djj/archive/2009/06/25/1510966.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Linux中后台执行scp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。