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/
, это просто содержит -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 определенный инструмент.
Почему Вы не добавляете cronjob к crontab типичного пользователя?
...
Если это должно войти в администраторский crontab пользователя, и необходимо выполнить его с sudo для него для выполнения правильно, то Вы одно решение могли бы быть должны изменить свой sudoers файл, чтобы позволить администраторскому пользователю запускать скрипт Python без пароля.
admin hostname = NOPASSWD: /path/to/python/script.py
Затем в admin
crontab файл пользователя:
0 0 * * * sudo /path/to/python/script.py > /tmp/script.py.log 2>&1
Запускать скрипт в полночь и вывод журнала к /tmp/script.py.log
(таким образом, Вы видите, где/если ошибки происходят).
Это предполагает что Ваше использование admin
пользователь указывает, что у Вас есть некорневой пользователь с именем пользователя admin
. Иначе, по умолчанию, root
пользователю разрешают выполнить команды sudo без аутентификации.
Можно просто добавить его к crontab корня: sudo crontab -e
Это будет работать как корень в указанном расписании. Посмотрите man 5 crontab
для crontab формата файла.
Править
DISPLAY=:0
*/5 * * * * /path/to/your/script