Tôi muốn chạy một quá trình bash và lưu trong biến env số giây cần để chạy. Tôi sẽ làm như thế nào?bash: lưu trong một biến số giây mà một quá trình đã thực hiện để chạy
Trả lời
Bạn có muốn đặt mã này trong tập lệnh của mình hay thực hiện từ quá trình bắt đầu tập lệnh không?
Đối với trường hợp sau, bạn có thể sử dụng từ dành riêng "thời gian" và sau đó phân tích cú pháp của từ đó để nhận được khoảng thời gian tập lệnh.
Nếu bạn muốn thực hiện điều này từ bên trong tập lệnh, bạn có thể đặt SECONDS thành 0 và mỗi lần sau đó bạn tham chiếu biến đó sẽ được cập nhật thành số giây đã trôi qua. Vì vậy, bạn có thể đặt "SECONDS = 0" ở phần đầu của tập lệnh, và bất cứ khi nào bạn cần thời gian trôi qua, nó sẽ ở trong biến SECONDS.
Bạn cũng có thể sử dụng $ GIÂY lừa trên dòng lệnh là tốt, ví dụ:
$ SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"
Thời gian từ dành riêng và biến GIÂY đều được ghi lại trong trang bash người đàn ông.
này hoạt động trong Bash, và cũng Zsh:
# Set time format to seconds
TIMEFORMAT=%R
# Time a process
PROC_TIME=$(time (insert command here >/dev/null 2>&1) 2>&1)
echo $PROC_TIME
- Hai chuyển hướng đầu tiên giấu đầu ra của quá trình của bạn ">/dev/null 2> & 1"
- Các chuyển hướng cuối cùng là cần thiết vì "thời gian" in thời gian trên stderr
'rtime() {TIMEFORMAT =% R; echo $ (time ("$ 1" 2> & 1) 2> & 1)} '.... và sau đó ...' echo $ SECONDS' - Đây là phép thuật ™ ... _và tôi sử dụng nó ** TẤT CẢ ** thời gian_. –
Sử dụng lệnh thời gian. Lưu ý rằng phiên bản bash của thời gian không giống như/usr/bin/time. Vì vậy, bạn sẽ có một cái gì đó như:
TIME=`/usr/bin/time --format="%e" your_command_here >/dev/null`
Định dạng chỉ kéo giá trị thời gian "thực" ra ngoài. Bạn sẽ cần phải chuyển đổi từ một chuỗi nếu bạn muốn làm bất cứ điều gì nhiều hơn hiển thị nó.
Nếu bạn chỉ muốn xuất chuỗi, hãy sử dụng export
.
Biến '$ TIME' thực sự được sử dụng bởi'/usr/bin/time' do đó sẽ tốt hơn nếu bạn chọn một tên biến khác. Một cách để tránh va chạm như vậy là không sử dụng tên mà tất cả các trường hợp trên cho các biến của riêng bạn. –
Sử dụng GNU time,
\time -p -o time.log $COMMAND
và sau đó đọc time.log
.
(Sử dụng một trong hai \time
hoặc command time
, nếu không bạn sẽ được sử dụng Bash của time
built-in, mà không hỗ trợ các tùy chọn này.)
này sẽ làm việc ngay cả khi $COMMAND
in để thiết bị lỗi chuẩn (trong đó sẽ nhầm lẫn Oli của trả lời), và giữ stdout/stderr (câu trả lời của Farzy không).
-o ...
nói time
để gửi sản lượng của nó vào một tập tin chứ không phải là để stderr (như là mặc định), và -p
tạo ra truyền thống
real 0.00
user 0.00
sys 0.00
hơn là mặc định GNU thời gian của
0.00user 0.00system 0:00.01elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
80inputs+0outputs (1major+188minor)pagefaults 0swaps
- 1. Làm thế nào để thực hiện một quá trình liên tục chạy trong JavaEE
- 2. Kịch bản Bash làm thế nào để ngủ trong quá trình mới sau đó thực hiện một lệnh
- 3. php thực hiện một quá trình nền
- 4. Cách chạy một quá trình 30 giây trong nền sau mỗi giờ (ứng dụng iphone)
- 5. linux: nhận được umask của một quá trình đã chạy?
- 6. java: chạy một hàm sau một số giây cụ thể
- 7. Bash: Kiểm tra lên, chạy một quá trình nếu không chạy
- 8. thực hiện một quá trình với argc = 0
- 9. Chạy một quá trình trong pythonw với Popen mà không có một giao diện điều khiển
- 10. Bash script - lưu trữ stderr trong một biến
- 11. Có thể cho một quá trình java trong một jvm để giết/dừng một quá trình java khác trong jvm?
- 12. Chạy lệnh bash ở chế độ nền mà không cần in mã số công việc và quá trình
- 13. Làm thế nào để hiển thị cây quá trình hiện tại của một phiên bash?
- 14. Chạy một cron mỗi 30 giây
- 15. Làm thế nào để thực hiện một số mã sau khi một segue được thực hiện?
- 16. lưu tệp văn bản vào một biến trong bash
- 17. Phát hiện số quá trình đang chạy với cùng tên
- 18. Làm thế nào để chạy một tiến trình với thời gian chờ trong Bash?
- 19. Đợi một giây trong chương trình đang chạy
- 20. Làm thế nào để thực hiện một macro variadic (số biến của tham số)
- 21. Làm thế nào để bạn thực hiện SQL từ bên trong một tập lệnh bash?
- 22. Thời gian thực hiện tối đa 30 giây vượt quá
- 23. lập trình thực hiện và chấm dứt một quy trình chạy hàng loạt dài trong python
- 24. chụp pid quá trình nền đã kết thúc bằng bẫy trong bash
- 25. Làm thế nào để lưu trữ kết quả của một lệnh shell thực hiện trong một biến trong python?
- 26. C#: thực hiện một chức năng được lưu trữ trong một biến chuỗi
- 27. Tạo một tệp bash thực thi chạy khi được bấm
- 28. Làm thế nào để thực hiện một hàm Clojure có một số tham số biến?
- 29. Chạy tập lệnh bash từ tập lệnh khác mà không phải đợi tập lệnh hoàn tất quá trình thực thi?
- 30. Nicing một quá trình python đang chạy?
bash là một nguồn không bao giờ kết thúc của lừa và bất ngờ – flybywire