Tôi có hệ thống tệp tmpfs được gắn trên một thư mục cụ thể hay không. Tôi muốn viết một kịch bản lệnh shell để kiểm tra xem hệ thống tập tin tmpfs đã được gắn trên thư mục chưa.Kịch bản lệnh Shell để biết liệu hệ thống tệp đã được gắn
Trả lời
Bạn có thể kiểm tra loại hệ thống tệp.
$ stat -f -c '%T'/ xfs $ stat -f -c '%T' /dev/shm tmpfs
Bạn cũng có thể kiểm tra xem thư mục có phải là điểm gắn kết hay không bằng cách so sánh thiết bị của nó với thiết bị của cha mẹ.
$ stat -c '%D'/ 901 $ stat -c '%D' /home fe01 $ stat -c '%D' /home/$USER fe01
Bạn có thể sử dụng df
, hãy thử man df
.
df 'directory' | awk '{print $1, $6}'
sẽ cung cấp cho bạn STH thích:
Filesystem Mounted
/dev/sda5 'some_dir'
sau đó bạn có thể thêm một tấm séc nếu thư mục 'some_dir' là giống như 'your_dir', và hệ thống tập tin là tương tự như của bạn.
Something như thế này, trong khi hackish, nên làm các trick:
FS_TO_CHECK="/dev" # For example... change this to suit your needs.
if cat /proc/mounts | grep -F " $FS_TO_CHECK " > /dev/null; then
# Filesystem is mounted
else
# Filesystem is not mounted
fi
Kiểm tra/proc/mounts. Nếu bạn grep trên tên hệ thống tập tin và đường dẫn bạn muốn nó được gắn kết (thậm chí có thể là một dòng cụ thể với tất cả các tùy chọn được bao gồm), bạn có thể biết hệ thống tập tin có được gắn kết hay không.
if [ "`grep "tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0" /proc/mounts`" != "" ]
then
echo Mounted.
else
echo Not mounted.
fi
Một ảo -1 cho việc sử dụng backticks ở một vị trí không tầm thường. – Sorpigal
'if grep ...' - không cần dấu ngoặc đơn. –
Có một công cụ đặc biệt cho việc này: mountpoint (1)
if mountpoint -q "$directory" ; then
echo it is a mounted mountpoint
else
echo it is not a mounted mountpoint
fi
Và bạn thậm chí không cần phải cạo dây để làm điều đó!
Lưu ý rằng tôi tìm thấy công cụ này trong gói initscripts của Debian. Làm thế nào có sẵn nó là ở nơi khác không phải là một cái gì đó tôi có thể bình luận về.
Tôi thấy rằng điểm gắn kết là một phần của gói Gentoo Linux sys-apps/util-linux cùng với nhiều hơn, gắn kết, umount, dmesg và một loạt các công cụ hệ thống khác. Tôi có thể nói đây là giải pháp sạch nhất. – cvolny
@cvolny: Nó chỉ ra rằng 'mountpoint' là một phần của util-linux (đặc biệt là phần sys-utils) và có lẽ có sẵn cách này hay cách khác trong hầu hết các bản phân phối Linux. Tuy nhiên, nó không phải là một phần của GNU và không có khả năng có sẵn trên các hệ thống không phải Linux. – Sorpigal
Dường như nó đến cổ phiếu với RHEL 7.1 (err. Ok, tôi đã cài đặt một số công cụ trên đây.Vì vậy, tôi không thể chắc chắn về điều đó) –
if mount -l -t tmpfs | grep "on $directory "
then
echo "it's mounted"
fi
Tôi biết chủ đề này cũ, nhưng tại sao không chỉ sử dụng df và grep cho đường dẫn cần thiết đến điểm gắn kết? tức là như sau:
df /full/path | grep -q /full/path
grep trả về true nếu được gắn, sai nếu không. Vì vậy, chúng ta chỉ cần kiểm tra nó như thế này:
df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted"
Peasy dễ dàng ...
Tôi quyết định bỏ phiếu này bởi vì mặc dù điểm gắn kết sẽ dễ dàng hơn cho câu hỏi được đặt ra, câu trả lời này linh hoạt hơn. Ví dụ, một số distro linux gắn tmpfs bộ nhớ chia sẻ tại/tmp trong khi những người khác sử dụng/dev/shm hoặc cả hai. Câu trả lời này làm cho nó dễ dàng nhận ra bạn có thể nói nếu/tmp được chia sẻ bộ nhớ hoặc không theo cùng một cách: 'df/tmp | grep -q tmpfs && echo "Bộ nhớ chia sẻ" || echo "Not Shared Memory' Hoặc, nhiều hơn đến điểm' df/tmp | grep -q tmpfs && tmp =/tmp || tmp =/dev/shm' –
mountpoint là nhiều hơn nữa thanh lịch và đang trong sysvinit-công cụ CentOS 6 +++
- 1. Kịch bản lệnh Shell để chạy nhiều quy trình
- 2. "$$" có nghĩa là gì trong kịch bản lệnh shell?
- 3. mảng kịch bản Shell
- 4. Cách tương thích POSIX để biết liệu hệ thống đã khởi động lại chưa?
- 5. Tìm và thay thế trong kịch bản lệnh shell
- 6. Làm cách nào để gắn kết hệ thống tệp bằng Python?
- 7. Làm cách nào để biết liệu đầu bóng trên khay hệ thống đã đóng chưa?
- 8. Gắn thẻ hệ thống tệp thay vì thư mục?
- 9. Làm cách nào để biết tệp có nằm trên hệ thống tệp từ xa với Perl không?
- 10. Biến số tự động trong kịch bản lệnh shell
- 11. Tạo tệp với một số nội dung có kịch bản lệnh shell
- 12. Shell script: Thực hiện lệnh sau khi chạy lệnh "thoát" trong kịch bản lệnh
- 13. Triển khai hệ thống tệp cơ bản
- 14. Tệp được gắn ở đâu?
- 15. Làm cách nào để có được vị trí hệ thống tệp của tập lệnh PowerShell?
- 16. Kiểm soát phiên bản ảnh đã tải lên hệ thống tệp
- 17. chạy kịch bản shell trong C++
- 18. kịch bản lệnh shell đơn giản để sao chép các tệp và thư mục và cũng thực hiện lệnh
- 19. Shell nào sử dụng hệ thống Perl()?
- 20. Đi qua một không gian tách biệt hệ thống tài sản thông qua một kịch bản shell không hoạt động
- 21. Cách lấy tất cả các công cụ được sử dụng trong kịch bản lệnh shell
- 22. C++ hệ thống linux lệnh
- 23. Kịch bản lệnh Shell sử dụng curl để lặp qua các url
- 24. Mysql: Cách gọi tệp tập lệnh sql từ tệp kịch bản lệnh sql khác?
- 25. Python - Tạo một hệ thống "tập lệnh"
- 26. Có thể viết kịch bản lệnh shell nhanh hơn tập lệnh tương đương trong Perl không?
- 27. Kịch bản lệnh Windows để di chuyển các tệp
- 28. Làm thế nào để vượt qua một biến TỪ TỪ TỪ một kịch bản lệnh shell?
- 29. Kịch bản lệnh vỏ và bảo mật
- 30. Kịch bản lệnh Python biết số lượng bộ nhớ mà nó đang sử dụng
Đúng, đủ ... – cdhowie