Bir sunucudan diğerine dosya kopyalamak için bir senaryo var, çünkü varolan bir scp'nin devam ettiğini kontrol etmem gerekiyor, örnek bir kabuk komut dosyası yazdım ama sözdizimine rağmen koşul karşılanmıyor doğru, buradaki temel sorun ps
komutunun çıkışı scpstat
değişkeninde saklanacaktır ve if deyimindeki eşleşen dizgiye göre aynıdır, burada değişkenin çıktısını alıyorum komut dosyasının dışında yürütmekten farklıdır. sh -x scpsamp.sh
'u çalıştırırken betiğin farklı şekilde biçimlendirildiğini görebiliyorsunuz, neden "sh
" çıktısına ekleniyor, ancak ps olmadan karşılaştırılırken ve scpstat='scp'
olarak atanırken ben durumu doğru olarak alabiliyorum, çıktı alırken yanlış bir şey yapıyorum değişkene. Bu ps
çıkışından gelen bilgileri ayıklamak için herkesin bildiği gibi zordize karşılaştırması kabuk betiğidir
#!/bin/sh
scpstat=`ps -ef | grep scp | egrep -v 'grep|ssh' | awk '{print $8}')`
if [ "$scpstat" = "scp" ];
then
echo "SCP is in progress"
else
echo "No SCP in progress"
fi
Eğer scp' pdiof 'kullanabilir ve bazı işlem kimliği verirse o zaman oluyor scp bağlantı yoktur: Sisteminiz
pgrep
varsa, o çok daha kolaydır. . –Bu, evde oynarken olanlar için "pidof". Ama ayrıca 'pgrep' burada yararlıdır. –
Siteler arası kopya: http://serverfault.com/questions/367921/how-to-prevent-ps-reporting-its-own-process – tripleee