hakkında bir hata veriyor Linux'ta yeni başlayan biriyim ve bash komut dosyasında büyük bir başlangıç yapıyorum. Ev dizinimi yedekleyecek ve bana ilerlemeyi gösterecek bir bash betiği yazmaya çalışıyorum. Bir tar.bz2 dosyasını tanımlarken bir ilerleme çubuğu göstermeme izin veren, ancak bir tane oluştururken kullanmamı sağlayan bir komut dosyası buldum. Ben kodunuzu bulup çalışıyorum, ancak bana bir hata veriyor: lsof:Verdiğiniz İlerleme Çubuğu kodu bana PID
#! /bin/bash tar -jcf userhomeBU$(date +%Y&m&d)".tar.bz2" /home/user lsof -o0 -o -p $PID | awk ' BEGIN { CONVFMT = "%.2f" } $4 ~ /^[0-9]+r$/ && $7 ~ /^0t/ { offset = substr($7, 3) fname = $9 "stat -f %z '\''" fname "'\''" | getline len = $0 print fname, offset/len * 100 "%" } ': Burada How to add a progress bar to a shell script? kodudur: hayır işlem kimliği ben bu sayfadan kodunuzu gitmek
4.81 lsof belirtilen
Ev dizinim yedeklenmedi, ancak hata nedeniyle ilerleme çubuğu yok.
Bu işlemin ne zaman yapıldığını görmek için PID'yi kullanacağı anlaşılıyor. Dosya ismini değil, dosyanın isminin başından bilinmeyeceğinden PID'yi kullandığını düşünüyorum. Bu betiğin tam olarak ne yaptığını açıklayabilir misiniz, ve neden izlemek için bir PID alamıyorum. Yedekleme kodumu önüne ve sonuna koymuştum ama bir çubuk göstermiyor ve aynı hatayı sadece farklı bir zamanda alıyorum.
Yardım!
Bu bana herhangi bir ilerleme göstermedi. Yanlış yaptığımdan emin değilim. – Newbie
Farklı bir yaklaşım kullanmak için yanıtı değiştirdi. –
Ayrıca, çalışmak için tarih komutu için 'm & d' yerine'% m% d 'kullanmam gerekiyordu. –