
У меня есть только пользователь 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