Ubuntu сервер 16.04 /tmp каталог полный

Проблема заключается в sleep

Когда вы CTRL+C убиваете sleep - не ваш sh (даже если синтаксис в вашем #!/bin/sh немного подозрителен). Однако сигнал получает вся группа процессов, потому что вы не установили свой обработчик в loop.sh. которая является вложенной оболочкой - она завершается сразу после этого.

Вам нужна ловушка в loop.sh. Ловушки очищаются для каждой запущенной подоболочки, если они явно не trap ''SIG игнорируются родителем.

Вам также необходимо контролировать работу -monitoring в вашем родителе, чтобы он отслеживал своих дочерних команд. wait, например, вообще работает только с контролем заданий. -monitor mode - это то, как оболочки взаимодействуют с терминалами.

sh  -cm '  . /dev/fd/3' 3<<""                     # `-m`onitor is important
     sh -c ' kill -INT "$$"'&                     # get the sig#
     wait %%;INT=$?                               # keep it in $INT
     trap  " stty $(stty -g;stty -icanon)" EXIT   # lose canonical input
     loop()( trap    exit INT                     # this is a child
             while   [ "$#" -le 100 ]             # same as yours
             do      echo "$#"                    # writing the iterator
                     set "" "$@"                  # iterating
                     sleep 3                      # sleeping
             done
     )
     int(){  case    $1      in                   # handler fn
             ($INT)  printf  "\33[2K\rDo you want to stop playing? "
                     case    $(dd bs=1 count=1; echo >&3)  in
                     ([Nn])  return
             esac;   esac;   exit "$1"
     }       3>&2    >&2     2>/dev/null
     while   loop ||
             int "$?"
     do :;   done

0
1
2
3
4
Do you want to stop playing? n
0
1
2
3
Do you want to stop playing? N
0
1
Do you want to stop playing? y
[mikeserv@desktop tmp]$
0
18.03.2018, 01:25
1 ответ

То, о чем вы просите, не сработает.

Перемещение файлов по символической ссылке в /var, указывающей на /tmp, по-прежнему будет занимать место в root, поскольку индексный дескриптор по-прежнему будет указывать на каталог /tmp, расположенный в root. Вы можете убедиться в этом сами.

Единственный вариант — либо переместить данные из /tmpв другое место, либо добавить место в ваш rootLVM, так как именно там находится ваш каталог /tmp.

0
28.01.2020, 04:30

Теги

Похожие вопросы