Как убить процесс, у которого я не могу получить pid на unix? В программе для чтения данных с устройства посредством usb я считываю данные таким образом, просто stream поток перенаправляю в файлroot@splincode:$ stty 4800 -F /dev/ttyUSB0 && cat /dev/ttyUSB0 > stream/tty.txt все данные постоянно пишутся в файлы tty.txt , и если я исполняю команду выше, то через терминал я уже ее никак не смогу отключить через ctrl+z/ctrl+c и другие. Суть в том, что пользователи вообще не будут использовать ведь терминал, убивать процесс я должен своей программой. беда в том, что моей программе в отдельном потоке приходится запускать эту команду, чтобы в другом потоке я мог считать данные из файла tty.txt но файл постоянно растет и может достигать больших размеров, я хотел бы сделать так, чтобы я мог в любой момент запустить команду выше и убить эти команды посредством kill но когда в терминале я запускаю (все из под root):root@splincode:$ ps aux splinco+ 18157 0.3 1.2 871608 92860 ? Sl 12:47 0:05 /opt/google/chrome/chrome --type=renderer --enable-features=*AutofillCreditCardSigninPromo stream/tty.txt root 18465 0.0 0.0 12800 668 pts/1 S+ 12:56 0:00 cat /dev/ttyUSB0 root 18466 0.1 0.0 0 0 ? S 12:56 0:01 [kworker/u8:0] root 18492 0.0 0.0 0 0 ? S 12:56 0:00 [kworker/2:1] root@splincode:$ ps aux | grep stty root 18463 0.0 0.0 4476 760 pts/1 S+ 12:56 0:00 /bin/sh -c ??stty 4800 -F /dev/ttyUSB0 && cat /dev/ttyUSB0 > stream/tty.txt root@splincode:$ pidof stty # ничего не выводит Но процесс надо как-то убивать, и я не знаю как Сам процесс правда убивается, если вытащить usb-шнур и обратно вставить, но такой возможности у меня не может быть, для тех людей, которые будут использовать программу Может есть эмуляция отключения usb и включения его обратно для /dev/ttyUSB0 ?
Если у вас нет возможности отключить и подключить USB устройство повторно, можно попробовать убить процесс, используя его PID. Однако, поскольку вы не знаете PID процесса, можно попробовать использовать команду pkill, чтобы убить процесс по имени команды. Например, в вашем случае:
pkill -f "stty 4800 -F /dev/ttyUSB0"
Команда pkill -f убьет процесс, содержащий в своем имени указанную фразу. Убедитесь, что в фразе указаны достаточно уникальные символы, чтобы не случайно завершить другие процессы.
Если это не сработает, можно попробовать использовать команду killall:
killall -q stty
Но обратите внимание, что это убьет все процессы с таким именем, что может быть нежелательно.
Если и это не сработает, возможно вам придется создать механизм для отслеживания PID процесса в вашей программе и управления им.
Если у вас нет возможности отключить и подключить USB устройство повторно, можно попробовать убить процесс, используя его PID. Однако, поскольку вы не знаете PID процесса, можно попробовать использовать команду pkill, чтобы убить процесс по имени команды. Например, в вашем случае:
pkill -f "stty 4800 -F /dev/ttyUSB0"Команда pkill -f убьет процесс, содержащий в своем имени указанную фразу. Убедитесь, что в фразе указаны достаточно уникальные символы, чтобы не случайно завершить другие процессы.
Если это не сработает, можно попробовать использовать команду killall:
killall -q sttyНо обратите внимание, что это убьет все процессы с таким именем, что может быть нежелательно.
Если и это не сработает, возможно вам придется создать механизм для отслеживания PID процесса в вашей программе и управления им.