Java SDK на NixOS для IntelliJ

Существует семейство команд Unix, которые будут, вероятно, обслуживать Вас лучше, если Вы будете знать о них для этого типа работы.

  • pgrep
  • pkill
  • killall

Можно использовать эти инструменты для создания "нападений" более целенаправленными, особенно в ситуациях, где Вы знаете процесс неправильного поведения по имени (s).

killall

У меня есть повторяющаяся проблема с Chrome, где с ним в конечном счете нужно иметь дело путем уничтожения его. Я обычно делаю эту команду для уничтожения всех их.

$ killall chrome

pgrep и pkill

Но я мог сделать это также, для контакта только с новейшим процессом:

# to list
$ pgrep -n chrome
23108

# to kill
$ pkill -n chrome

Уничтожение на основе командной строки

Можно также добавить -f переключитесь для достижения тех процессов, которые имеют аргументы длинного тракта, что Вы соответствовали бы на вместо просто имени их исполняемого файла.

Например, скажите, что у меня были эти процессы:

$ ps -eaf | grep some
saml     26624 26575  0 22:51 pts/44   00:00:00 some weird command
saml     26673 26624  0 22:51 pts/44   00:00:00 some weird command's friend
saml     26911 26673  8 22:54 pts/44   00:00:00 some weird command's friend

Они - просто оболочки Bash со своим набором ARGV0 к тем именам. Случайно я сделал те процессы с помощью этого приема:

$ (exec -a "some weird command name's friend" bash)

Следование за друзьями

Но скажите, что у меня есть многие из них, и я только хочу следовать за определенным набором их, потому что у них есть "друг" в их командных строках. Я мог сделать это:

$ pgrep -f friend
26673
26911

Следование за самым молодым другом

И если были несколько их, и я хотел следовать за новейшим, добавить -n переключитесь назад в соединение:

$ pgrep -fn friend
26911

Можно также использовать регулярные выражения при включении в список -f переключатель, таким образом, они работали бы, например:

$ pgrep -f "weird.*friend"
26673
26911

Отображение их имен

Можно проверить имена процессов дважды с помощью -l переключатель:

$ pgrep -f "weird.*friend" -l
26673 some weird command's friend
26911 some weird command's friend

Управление выводом

Или скажите pgrep перечислять идентификаторы процесса разграничило использование запятой (,):

$ pgrep -f "weird.*friend" -d,
26673,26911

Можно сделать прохладные вещи как это:

$ ps -fp $(pgrep -f weird -d,)
UID        PID  PPID  C STIME TTY          TIME CMD
saml     26624 26575  0 22:51 pts/44   00:00:00 some weird command
saml     26673 26624  0 22:51 pts/44   00:00:00 some weird command's friend
saml     26911 26673  0 22:54 pts/44   00:00:00 some weird command's friend

Таким образом, как я уничтожаю высокий процесс ЦП?

Я использовал бы вышеупомянутое, чтобы быть более выборочным в следовании за высоким процессом ЦП. Вы могли использовать подход уничтожения использования этих методов:

# newest guys
$ pkill -nf vlc ; pkill -nf opensnap

# kill all of these
$ killall vlc; killall opensnap

Взгляд на их загрузки ЦП:

$ top -b -n 1 | grep -E $(pgrep -f "weird.*friend" -d\|) | grep -v grep
26911  0.1  112m 106m 6408  848 4900 1512    0    0 S  20   0  0.0 some weird command's friend                                     
26673  0.1  112m 106m 6392  848 5020 1504    0    0 S  20   0  0.0 some weird command's friend 

Здесь я изменил разделитель от запятой (,) иначе. этот переключатель -d,, к каналу (|) иначе. этот переключатель -d\|, так, чтобы я мог использовать его в a grep. Выполнение этого возвратит идентификаторы процесса как это:

$ pgrep -f "weird.*friend" -d\|
26673|26911

Мы затем вставляем их в grep -E ... управляйте, таким образом, мы можем отфильтровать вывод от top на основе определенных идентификаторов процесса.

Это могло бы походить на большой изгиб назад, но мы теперь знаем с уверенностью, что идентификаторы процесса, которые мы используем, являются только теми связанными с дать процессом, названным "странным. *friend".

Отсюда можно найти процесс с самым высоким ЦП и уничтожить его, если Вы действительно хотите пойти тем путем.

Более целенаправленный подход к высокому ЦП

$ top -b -n 1 | grep -E $(pgrep -f "weird.*friend" -d\|) | \
    grep -v grep | sort -nk14,14 | tail -1
26911  0.1  112m 106m 6408  848 4900 1512    0    0 S  20   0  0.0 some weird command's friend                                     

Вышеупомянутые шоу отсортированный вывод от top (14-м) столбцом CPU. Это отсортировано от самого низкого до самого высокого, таким образом, мы проводим последнюю строку (tail -1) который был бы самым высоким процессом ЦП "странный. *friend" процессы.

4
17.10.2015, 20:54
1 ответ

Попробуйте

/ nix / store /...- oraclejdk-8u60 /

Intellij ожидает корень JAVA_HOME , и добавляет сам bin / java .

0
27.01.2020, 21:03

Теги

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