Đây dường như là một cơ hội lý tưởng để thuê bạn một số xargs
(hoặc GNU Parallel ):
getent passwd \
| awk -F: '$3>=1000 && $1!="nfsnobody" {print $1}' \
| xargs -I{} \
echo xfs_quota -x -c \"limit bsoft=5g bhard=6g {}\" /home
# output:
# xfs_quota -x -c "limit bsoft=5g bhard=6g userone" /home
# xfs_quota -x -c "limit bsoft=5g bhard=6g usertwo" /home
Lợi thế của việc sử dụng xargs
hoặc parallel
là bạn có thể chỉ cần loại bỏecho
khi bạn sẵn sàng chạy lệnh thực sự (có thể thay thế bằng sudo
, nếu cần thiết).
Bạn cũng có thể sử dụng các tùy chọn -p
/ / --interactive
( tiện ích này chỉ dành cho GNU) hoặc --dry-run
( parallel
chỉ), để xác nhận trước khi chạy từng tiện ích hoặc chỉ để xem những gì sẽ chạy, trước khi bạn chạy nó.
Phương thức chung được sử dụng ở trên sẽ hoạt động trên hầu hết các Unix và không yêu cầu xargs
tùy chọn dành riêng cho GNU . Các dấu ngoặc kép làm cần phải "trốn" vì vậy mà chúng xuất hiện theo nghĩa đen ở đầu ra. Lưu ý rằng "chuỗi thay thế" {}
, trong xargs -I{}
có thể là bất cứ điều gì bạn thích và -I
ngụ ý -L1
(chạy một lệnh trên mỗi dòng đầu vào thay vì gộp chúng lại).
GNU Parallel không yêu cầu -I
tùy chọn ( {}
là chuỗi thay thế mặc định), và cung cấp cho bạn tiền thưởng ngay lập tức chạy nhiều công việc song song, thậm chí nếu bạn không muốn làm phiền tìm hiểu về bất kỳ của nó khác các tính năng .
Là một mặt lưu ý, tôi thậm chí không chắc chắn nếu xfs_quota
's -c
lựa chọn là nghĩa vụ phải được sử dụng như thế này, mặc dù tôi không có XFS hệ thống tập tin thuận tiện để kiểm tra. Bạn có thể thậm chí không cần phải xử lý chuỗi được trích dẫn ở vị trí đầu tiên (trừ khi bạn mong đợi tên người dùng có khoảng trắng trong đó, theo tôi đoán là có thể), vì có vẻ như bạn có thể đưa ra nhiều -c
tùy chọn trên cùng một dòng lệnh, theo đến trang man kèm theo xfsprogs
4.5.s Something.