Альтернатива 'pkill' или 'pgrep-f' на cygwin?

Не такое грандиозное предприятие.

Во время первого относящегося к двухтысячному году блица, в котором поставщики программного и аппаратного обеспечения были обязаны сертифицировать свои продукты как "двухтысячный год, совместимый", чтобы быть проданным (я помню сетевые кабели на PC Connection, сертифицированном совместимая Y2K) много компаний сделало подробные аудиты всего путем установки часов в будущем и тестировании.

В то время, так как стоимость тестирования была так высока, они почти всегда тестировали с несколькими датами, такими как 01.01.99 (некоторые разработчики, возможно, использовали 99 в качестве сигнальной метки), 31.12.99, 1/1/00, leapness 2000, 19.01.38, и многие другие. Посмотрите здесь для утомительного списка.

Таким образом я полагаю, что любое важное программное обеспечение, которое было вокруг в 1999, не будет, вероятно, иметь 2 038 ошибок, но новое программное обеспечение, записанное с тех пор неосведомленными программистами, могло бы. После того, как целые относящиеся к двухтысячному году программисты разгрома обычно становились намного больше знающий о проблемах кодирования даты, таким образом, это вряд ли будет столь большое влияние, как двухтысячный год был (который, сам по себе, был чем-то вроде разочарования).

7
04.04.2019, 12:49
3 ответа

pkill и pgrep, конечно, существуют в Cygwin в procps пакете (можно искать cygwin пакеты здесь).

Это, кажется, работает на меня,

tony:~$ nohup sleep 100983 &
[1] 5476
tony:~$ nohup: ignoring input and appending output to `nohup.out'
tony:~$
tony:~$ ps -ef | grep sleep
    tony    5476    2696   2  23:28:53 /usr/bin/sleep
tony:~$ pkill -f sleep
[1]+  Terminated              nohup sleep 100983
tony:~$

и

tony:~$ nohup sleep 837746 &
[1] 228
tony:~$ nohup: ignoring input and appending output to `nohup.out'
tony:~$ pgrep -f 837746
228
tony:~$ pkill -f 837746
[1]+  Terminated              nohup sleep 837746
tony:~$

Обновление: хорошо, протестированный с Java. Выполнение Java из командной строки Cygwin не приводит к строке Java, помещаемой в /proc/<pid>/cmdline, это просто содержит -bash. Это, кажется, ограничение Cygwin.

tony:~$ java -Dsomething=valid -jar Captor.jar &
[1] 2700
tony:~$ ps -ef
     UID     PID    PPID TTY     STIME COMMAND
    tony    4164       1   ?    Aug 21 /usr/bin/mintty
    tony    4676    4164   0    Aug 21 /usr/bin/bash
    tony    5776    4676   0    Aug 23 /usr/bin/ssh
    tony    5148       1   ?  23:53:03 /usr/bin/mintty
    tony    5332    5148   1  23:53:03 /usr/bin/bash
    tony    5816       1   ?  00:04:16 /usr/bin/mintty
    tony    5432    5816   2  00:04:16 /usr/bin/bash
    tony    2700    5432   2  00:04:34 /cygdrive/c/Windows/system32/java
    tony    2232    5432   2  00:04:39 /usr/bin/ps
tony:~$ pgrep -f something
tony:~$ cat /proc/2700/cmdline
-bash
tony:~$
tony:~$ cat /proc/2700/exename
/cygdrive/c/Windows/system32/java

Я подозреваю поэтому, ответ - Вы, не может сделать этого с инструментом Cygwin, Вам был бы нужен Windows определенный инструмент.

15
27.01.2020, 20:13
  • 1
    Ваш пример существенно отличается, чем тот, который пробует OP. Вы соответствовали названию процесса, а не произвольной строки в, он - аргументы. Можно ли протестировать последнего и видеть ли, работает ли это? –  Caleb 25.08.2011, 08:21
  • 2
    , кажется, хорошо работает –  EightBitTony 25.08.2011, 10:06
  • 3
    Кажется, что procps не доступен для x64 cygwin. –  thameera 15.10.2013, 08:57
  • 4
    @thameera procps-ng. –  Abdull 22.09.2016, 11:54
  • 5
    apt-cyg install procps-ng с новейшим cygwin –  Timo 20.11.2017, 17:09

Утилиты Cygwin работают как Linux, но они только работают над процессами Cygwin. Для процессов Windows необходимо использовать утилиты Windows, такие как те от Sysinternals. PsKill может уничтожить процессы по имени.

4
27.01.2020, 20:13
  • 1
    , как может собственный компонент taskkill /f /im procname.exe –  Marcos 28.02.2012, 14:51
  • 2
    ps также выставочный Windows обрабатывает с -W переключатель –  golimar 11.12.2014, 19:00

В более старых версиях Cygwin существует a procps пакет, который можно установить для получения той же функциональности с теми же командами.

В более новых версиях Cygwin, procps пакет больше не существует и заменяется пакетом procps-ng.

4
27.01.2020, 20:13

Теги

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