Как поместить доступное дисковое пространство в имя файла?

Как поместить доступное дисковое пространство в имя файла?

У меня есть только пользователь SFTP, и я хочу, чтобы он мог видеть доступное пространство.

Я хочу создать скрипт cron, который будет запускаться каждые 30 минут, удалять старый файл и помещать новый, чтобы показывать свободное место на диске.

Я мог бы просто поставить df -h > df.txt, но я не хочу этого делать. Я хочу пустой файл с именем типа: 3.1G.available, а затем в скрипте оболочки удалить *.availableи создать новый файл - который запускается cron.

Заранее спасибо.

решение1

Давайте начнем с dfкоманды, используя -hопцию, позволяющую указать размер в удобном для чтения формате (в данном случае в гигабайтах).

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       226G  2.4G  213G   2% /
udev            1.7G  4.0K  1.7G   1% /dev
tmpfs           691M  324K  690M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            1.7G     0  1.7G   0% /run/shm

Теперь давайте используем , grepчтобы сузить вывод этой команды до только интересующего нас раздела -sda1

$ df -h | grep 'sda1'
/dev/sda1       226G  2.4G  213G   2% /

Выглядит хорошо. Давайте продолжим сужать его до столбца «Доступно», используяawk

$ df -h | grep 'sda1' | awk '{print $4}'
213G

Это сработает. Теперь мы заключим нашу команду в обратные кавычки, чтобы вывод был возвращен в оболочку. Затем мы используем команду touchдля создания пустого файла, используя вывод из команды, которую мы построили, вместе со строкой '.available'

$ touch `df -h | grep 'sda1' | awk '{print $4}'`.available
$ ls
213G.available

Вот и всё!

решение2

Другой путь

touch `df -h --output='avail' / | tail -1`.available

Связанный контент