Forum » Programiranje » SCP hangs
SCP hangs
minjana ::
Zivjo,
Mam en zanimiv problem.
Ko naredim non-interactive scp, mi ssh obvisi.
Torej scp fajl user@IP:/tmp/, generira en podprocess
/usr/bin/ssh -x -oFallBackToRsh no -luser IP scp -t /tmp
sam scp se ze ugasne, ampak ssh se pa ne, cez nekaj casa (3-4 ure) pride to timeouta. Probelm nastane ko scp-jas 100.000 fajlov, kar pomeni da ti obvisis 100.000 processov.
Resitev je sicer upgrade ssh-ja, sam to na zalost ni izvedljivo.
A kdo slucajno ve kako bi v sh skripti, dobil pravilni PID od trenutnega(zadnjega) scp-ja. Ne smem kr vse kilat, ker mi vec skript na enkrat prenasa fajle, in ce napacnega ubijem potem valda fajla ne prenese do konca.
Kako nej zvem kateri PID je pravilen?
Mam en zanimiv problem.
Ko naredim non-interactive scp, mi ssh obvisi.
Torej scp fajl user@IP:/tmp/, generira en podprocess
/usr/bin/ssh -x -oFallBackToRsh no -luser IP scp -t /tmp
sam scp se ze ugasne, ampak ssh se pa ne, cez nekaj casa (3-4 ure) pride to timeouta. Probelm nastane ko scp-jas 100.000 fajlov, kar pomeni da ti obvisis 100.000 processov.
Resitev je sicer upgrade ssh-ja, sam to na zalost ni izvedljivo.
A kdo slucajno ve kako bi v sh skripti, dobil pravilni PID od trenutnega(zadnjega) scp-ja. Ne smem kr vse kilat, ker mi vec skript na enkrat prenasa fajle, in ce napacnega ubijem potem valda fajla ne prenese do konca.
Kako nej zvem kateri PID je pravilen?
Jean-Paul ::
Bash PID zadnjega zagnanega procesa shrani v spremenljivko !
primer:
sleep 1000&
pid=$!
kill -kill $pid
wait $pid
echo $pid was terminated by a SIG$(kill -l $?) signal.
P.S. man wait
primer:
sleep 1000&
pid=$!
kill -kill $pid
wait $pid
echo $pid was terminated by a SIG$(kill -l $?) signal.
P.S. man wait
minjana ::
Hm sem ze prej sprobal pa ne dela, ker scp forka nov process.
test skripta
user@IP1:/home/user$ cat tt.sh
#!/usr/bin/bash
set -x
scp fajl user@IP2:/tmp/
pid=$!
echo $pid
user@IP1:/home/user$
rezultat
user@IP1:/home/user$ ./tt.sh
++ scp fajl user@IP2:/tmp/
fajl 100% |*********************************************************************************| 4147 KB 00:00
++ pid=
++ echo
user@IP1:/home/user$
test skripta
user@IP1:/home/user$ cat tt.sh
#!/usr/bin/bash
set -x
scp fajl user@IP2:/tmp/
pid=$!
echo $pid
user@IP1:/home/user$
rezultat
user@IP1:/home/user$ ./tt.sh
++ scp fajl user@IP2:/tmp/
fajl 100% |*********************************************************************************| 4147 KB 00:00
++ pid=
++ echo
user@IP1:/home/user$
Jean-Paul ::
Forkanju se izogneš tako, da uporabiš ssh neposredno in ne posredno preko scp-ja
Tako:
tar czv local_files | ssh remote_machine 'tar xz -C remote_dir' &
PID=$! ;
wait $PID ;
echo "Job $PID exited with status $?" ;
V spremenljivki ? se nahaja exit status programa, ki ga je sshd pognal na remote mašini, oz. 255 v primeru, če je prišlo do napake. (man ssh)
Tako:
tar czv local_files | ssh remote_machine 'tar xz -C remote_dir' &
PID=$! ;
wait $PID ;
echo "Job $PID exited with status $?" ;
V spremenljivki ? se nahaja exit status programa, ki ga je sshd pognal na remote mašini, oz. 255 v primeru, če je prišlo do napake. (man ssh)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Domači strežnik (strani: 1 2 )Oddelek: Omrežja in internet | 12827 (10920) | Zalachenko |
» | Windows 10 bo dobil bash! (strani: 1 2 3 )Oddelek: Novice / Operacijski sistemi | 48953 (41220) | Jst |
» | Debian & SSH dostopOddelek: Operacijski sistemi | 1887 (1723) | Ice-Heki |
» | VNC+ varnost + dinamični IP. Kako ??Oddelek: Omrežja in internet | 4366 (3382) | flisko |
» | Sharing fajlov preko mreže-linuxOddelek: Operacijski sistemi | 981 (900) | hruske |