При разделении диска Вы освободите все в /usr/local
.
Относительно реального вопроса, конечно, можно продолжить использовать программное обеспечение в usr/local
. Но знайте, что Ваш диспетчер пакетов не знает об этом, и может очень хорошо обновить (или даже удалить), пакеты, что что-то в /usr/local
потребности, и таким образом, это может прекратить работать в любое время.
Существует ряд возможностей (некоторые упомянутые в других ответах):
/ etc / inittab
Въезд для службы с рукояткой Директива
Директива перезапуска
, установленном значением, отличному от NO
, Директива
Monit
, или Интересный новый (только Linux) инструмент, который может обеспечить более проницательность, в котором начался процесс SYSDIG .
SYSDIG использует функции трассировки TracePoint Linux Kernel, чтобы обеспечить то, что значительно быстро, ширина системы
.
Например, если я хотел увидеть каждый процесс, начинающий LS
, я могу выдать:
sudo sysdig evt.type=execve and evt.arg.exe=ls
, когда где-то запускается
LS , я получу такое сообщение:
245490 16:53:54.090856066 3 ls (10053) < execve res=0 exe=ls args=--color=auto. tid=10053(ls) pid=10053(ls) ptid=9204(bash) cwd=/home/steved fdlimit=1024 pgft_maj=0 pgft_min=37 vm_size=412 vm_rss=4 vm_swap=0 env=...
Я урезал информацию об окружающей среде возвращается, но, как вы можете видеть, в PTID я вижу имя и PID программы Выполнение вызова. Execive
- это системный вызов, используемый в Linux, используемый для выполнения новых команд (все остальные вызовы exect - это просто находки для выполнения).
Если вы не знаете, кто является родительским, вы должны вам какой-то системный трассировк Auditd
, вы сможете включить в систему:
auditctl -a exit,always -S execve -F path=/usr/bin/rrdtool
, а затем в / var / log / audit Audit.log
Найти строки, такие как:
type=SYSCALL msg=audit(1414027338.620:6232): arch=c000003e syscall=59
success=yes exit=0 a0=7fdea0e4db23 a1=7fffec7c5220 a2=7fffec7c87d0
a3=7fdea1b559d0 items=2 ppid=17176 pid=18182 auid=1000 uid=1000 gid=1000
euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts8
ses=2 comm="sh" exe="/bin/dash" key=(null)
(разбиты на несколько строк для удочшимости). Вы заинтересованы в exe = "/ bin / dash"
и / или PID = 18182
, которые определяют ваш процесс Rouge, который вы хотите искать, и PPID = 17176
, который идентифицирует родитель, который выполнил его.
Вы можете посмотреть на его PPID (идентификатор родительского процесса) :
$ ps -eo pid,ppid,args | grep java
После того, как вы получили PPID (вторая колонка) вашего Java процесса, используйте ps
снова, чтобы найти связанный с ним процесс:
$ ps -p [PPID]
Edit : если родителю 1 (init), то первый родитель вашего Java процесса умер сразу после "рождения" (как это печально). Из-за этого, вы не можете использовать текущую иерархию процесса, чтобы найти ее. Первое, что я бы порекомендовал вам сделать, это проверить ps -ef
. Вы можете найти виновного, просто прочитав вывод.
Затем, посмотрите на crontabs (вы уже сделали это, но это не повредит) :
$ for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
Это потребует привилегий корня.
Все еще не видишь запланированного Java-процесса? Черт возьми. Давай попробуем что-нибудь другое. Если ваш Java-процесс присутствует с момента загрузки, взгляните на программы, схематично расположенные во время загрузки. Я бы предложил что-нибудь вроде...
$ grep -iR java /etc/rc*
Если ты все еще ничего не можешь найти, то... Ну, я признаю, что у меня заканчиваются идеи. Вам действительно стоит еще раз взглянуть на ps -ef
и найти процессы, связанные с программами, основанными на Java. Вы должны наткнуться на демона, или "пусковую установку", ответственную за постоянное дыхание вашего Java-процесса.
Я считаю, что вы можете использовать PSTREE
. Вы можете указать команду как,
pstree -p PID
вышеупомянутая, даст вам список всех родителей приложений Java.