وقتی بک آپ می گیرید، فایل های بزرگ را روی سیستم لینوکسی تان کپی یا جابه جا می کنید، شاید بخواهید میزان پیشرفت عملیات (Progress Bar) در حال اجرا را مانیتور کنید. خیلی از ابزارهای ترمینال به شما این امکان را نمیدهند که اطلاعات میزان پیشرفت دستور در حال اجرا با استفاده از پایپ "|" ببینید .
در این مقاله به یک دستور مهم در لینوکس/یونیکس به نام pv خواهیم پرداخت. PV یک ابزار مبتنی بر ترمینال است که به شما اجازه می دهد با استفاده از pipe (|) میزان پیشرفت دستور را مانیتور کنید. وقتی از دستور pv استفاده می کنید، یک محیط گرافیکی با اطلاعات زیر نمایش داده می شود :
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته copy در لینوکس برای نمایش میزان پیشرفت کپی فایل ها و دایرکتوری های بزرگ
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 نمونه از دستور scp برای انتقال فایل ها و فولدرها در لینوکس
10 مثال از دستور Rsync در لینوکس
دستورات nc و pv برای انتقال فایل ها بین دو کامپیوتر
نحوه نصب دستور pv در لینوکس؟
این دستور به صورت پیش فرض در بیشتر توزیع های لینوکس نصب نمی باشد، بنابراین می توانید آن را با گام های زیر نصب کنید.
بر روی RHEL, Fedora, CentOS
اول باید مخزن EPEL را فعال کنید و بعد دستور زیر را اجرا کنید.
نمونه خروجی
بر روی Debian, Ubuntu, Mint
نمونه خروجی
بر روی لینوکس Gentoo
از مدیر بسته emerge برای نصب دستور pv مانند زیر استفاده کنید.
بر روی لینوکس FreeBSD
شما می توانید از port برای نصب آن استفاده کنید به صورت زیر:
یا بسته باینری آن را به صورت زیر اضافه کنید:
نحوه استفاده دستور pv در لینوکس
Pv معمولا با برنامه های دیگر که قابلیت مانیتور کردن میزان پیشرفت خروجی خودشان در زمان اجرا را ندارند استفاده می شود. شما می توانید آن در یک pipeline بین دو پروسس قرار دهید، یا با آپشن های مناسب موجود استفاده کنید.
ورودی استاندارد pv از خروجی استانداردش عبور خواهد کرد و میزان پیشرفت (خروجی) در error استاندارد چاپ خواهد شد. در واقع رفتاری مشابه دستور cat در لینوکس دارد.
دستور pv به صورت زیر قابل استفاده است:
آپشن هایی که همراه pv استفاده می شوند به سه دسته تقسیم می شوند، نمایش سوئیچ ها، modifier (ایجاد تغییرات) خروجی و آپشن های کلی.
چند آپشن برای تغییر نمایش.
این وقتی خوب است که pv را استفاده می کنید تا میزان پیشرفت را در یک ترمینال نشان دهد.
چند آپشن برای تغییر خروجی.
استفاده دستور pv به همراه مثال
1. وقتی هیچ آپشن ای ذکر نشده است، دستور pv به صورت پیش فرض از آپشن های -p، -t، -e، -r و –b استفاده می کند.
برای مثال، برای کپی فایل opensuse.vdi به /tmp/opensuse.vdi، دستور زیر را اجرا کنید و نوار پیشرفت را در زیر مشاهده کنید.
2. برای zip کردن یک فایل از فایل /var/log/syslog تان، دستور زیر را اجرا کنید.
3. برای شمارش تعداد خطوط، کلمات و بایت ها در فایل /etc/hosts و نمایش نوار پیشرفت، دستور زیر را اجرا کنید.
4. مانیتور کردم میزان پیشرفت در ایجاد یک فایل بک آپ با استفاده از ابزار tar .
5. از pv و dialog مبتنی بر ترمینال برای ایجاد یک دیالوگ progress bar به صورت زیر استفاده کنید.
خلاصه
این یک ابزار مبتنی بر ترمینال است که می توانید با ابزارهایی که توانایی مانیتور جریان یک عمیات مانند کپی، جابه جایی، بک آپ را ندارند استفاده کنید. برای آپشن های بیشتر این دستور به صفحه man دستور pv مراجعه کنید. منتظر نظرات و پیشنهادات شما هستیم.
در این مقاله به یک دستور مهم در لینوکس/یونیکس به نام pv خواهیم پرداخت. PV یک ابزار مبتنی بر ترمینال است که به شما اجازه می دهد با استفاده از pipe (|) میزان پیشرفت دستور را مانیتور کنید. وقتی از دستور pv استفاده می کنید، یک محیط گرافیکی با اطلاعات زیر نمایش داده می شود :
- زمان سپری شده
- درصد کامل شده در نوار جریان
- نمایش نرخ بازدهی کنونی
- مقدار کل داده ارسال شده
- و زمان تخمین زده شده.
همچنین توصیه میشود مطالعه کنید :
دستور پیشرفته copy در لینوکس برای نمایش میزان پیشرفت کپی فایل ها و دایرکتوری های بزرگ
pscp - انتقال/کپی فایل ها به چندین سرور لینوکس با استفاده از تنها یک شل
10 نمونه از دستورات sFTP برای انتقال فایل ها روی سرورهای لینوکس راه دور
10 نمونه از دستور scp برای انتقال فایل ها و فولدرها در لینوکس
10 مثال از دستور Rsync در لینوکس
دستورات nc و pv برای انتقال فایل ها بین دو کامپیوتر
نحوه نصب دستور pv در لینوکس؟
این دستور به صورت پیش فرض در بیشتر توزیع های لینوکس نصب نمی باشد، بنابراین می توانید آن را با گام های زیر نصب کنید.
بر روی RHEL, Fedora, CentOS
اول باید مخزن EPEL را فعال کنید و بعد دستور زیر را اجرا کنید.
کد:
# yum install pv # dnf install pv [On Fedora 22+ versions]
کد:
Dependencies Resolved ================================================================================= Package Arch Version Repository Size ================================================================================= Installing: pv x86_64 1.4.6-1.el7 epel 47 k Transaction Summary ================================================================================= Install 1 Package Total download size: 47 k Installed size: 93 k Is this ok [y/d/N]: y Downloading packages: pv-1.4.6-1.el7.x86_64.rpm | 47 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : pv-1.4.6-1.el7.x86_64 1/1 Verifying : pv-1.4.6-1.el7.x86_64 1/1 Installed: pv.x86_64 0:1.4.6-1.el7 Complete!
بر روی Debian, Ubuntu, Mint
کد:
# apt-get install pv
کد:
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: pv 0 upgraded, 1 newly installed, 0 to remove and 533 not upgraded. Need to get 33.7 kB of archives. After this operation, 160 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe pv amd64 1.2.0-1 [33.7 kB] Fetched 33.7 kB in 0s (48.9 kB/s) Selecting previously unselected package pv. (Reading database ... 216340 files and directories currently installed.) Preparing to unpack .../archives/pv_1.2.0-1_amd64.deb ... Unpacking pv (1.2.0-1) ... Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Setting up pv (1.2.0-1) ...
بر روی لینوکس Gentoo
از مدیر بسته emerge برای نصب دستور pv مانند زیر استفاده کنید.
کد:
# emerge --ask sys-apps/pv
بر روی لینوکس FreeBSD
شما می توانید از port برای نصب آن استفاده کنید به صورت زیر:
کد:
# cd /usr/ports/sysutils/pv/ # make install clean
کد:
# pkg_add -r pv
نحوه استفاده دستور pv در لینوکس
Pv معمولا با برنامه های دیگر که قابلیت مانیتور کردن میزان پیشرفت خروجی خودشان در زمان اجرا را ندارند استفاده می شود. شما می توانید آن در یک pipeline بین دو پروسس قرار دهید، یا با آپشن های مناسب موجود استفاده کنید.
ورودی استاندارد pv از خروجی استانداردش عبور خواهد کرد و میزان پیشرفت (خروجی) در error استاندارد چاپ خواهد شد. در واقع رفتاری مشابه دستور cat در لینوکس دارد.
دستور pv به صورت زیر قابل استفاده است:
کد:
pv file pv options file pv file > filename.out pv options | command > filename.out comand1 | pv | command2
چند آپشن برای تغییر نمایش.
- برای فعال کردن نوار نمایش، از آپشن –p استفاده کنید.
- برای نمایش زمان سپری شده، از آپشن –timer استفاده کنید.
- برای فعال کردن تایمر ETA که نشان دهنده مقدار زمان باقی مانده برای اتمام فعالیت است، از آپشن –eta استفاده کنید. حدس این زمان بر اساس rate قبلی transfer و سایزکل داده است.
- برای فعال کردن یک شمارنده ی rate از آپشن –rate استفاده کنید.
- برای نمایش کل داده منتقل شده تا حالا، از آپشن –bytes استفاده کنید.
- برای نمایش مقدار پیشرفت به صورت درصد عددی به جای گرافیکی، از آپشن –n استفاده کنید.
این وقتی خوب است که pv را استفاده می کنید تا میزان پیشرفت را در یک ترمینال نشان دهد.
چند آپشن برای تغییر خروجی.
- برای منتظر ماندن تا زمانی که اولین byte از اطلاعات جابجا شود قبل از نمایش اطلاعات پیشرفت دستور باید از آپشن –wait استفاده کنید.
- فرض کنید مقدار کل داده برای انتقال SIZE بایت است وقتی درصد و ETA را حساب می کنید، از آپشن –size SIZE استفاده کنید.
- برای مشخص کردن فاصله های زمانی بین آپدیت ها ، از آپشن –interval SECONDS استفاده کنید.
- برای اجبار یک عملیات از آپشن –force استفاده کنید. آین آپشن pv را مجبور می کند تا تصاویر را زمانی که standard error یک ترمینال نباشد، نشان دهد.
- آپشن های کلی –help برای نمایش نحوه کارکرد و –version برای نمایش ورژن هستند.
استفاده دستور pv به همراه مثال
1. وقتی هیچ آپشن ای ذکر نشده است، دستور pv به صورت پیش فرض از آپشن های -p، -t، -e، -r و –b استفاده می کند.
برای مثال، برای کپی فایل opensuse.vdi به /tmp/opensuse.vdi، دستور زیر را اجرا کنید و نوار پیشرفت را در زیر مشاهده کنید.
کد:
# pv opensuse.vdi > /tmp/opensuse.vdi
2. برای zip کردن یک فایل از فایل /var/log/syslog تان، دستور زیر را اجرا کنید.
کد:
# pv /var/log/syslog | zip > syslog.zip
3. برای شمارش تعداد خطوط، کلمات و بایت ها در فایل /etc/hosts و نمایش نوار پیشرفت، دستور زیر را اجرا کنید.
کد:
# pv -p /etc/hosts | wc
4. مانیتور کردم میزان پیشرفت در ایجاد یک فایل بک آپ با استفاده از ابزار tar .
کد:
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
5. از pv و dialog مبتنی بر ترمینال برای ایجاد یک دیالوگ progress bar به صورت زیر استفاده کنید.
کد:
# tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
خلاصه
این یک ابزار مبتنی بر ترمینال است که می توانید با ابزارهایی که توانایی مانیتور جریان یک عمیات مانند کپی، جابه جایی، بک آپ را ندارند استفاده کنید. برای آپشن های بیشتر این دستور به صفحه man دستور pv مراجعه کنید. منتظر نظرات و پیشنهادات شما هستیم.