splincodewd
@splincodewd
Developer

Как убить процесс, у которого я не могу получить 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<AutofillCred
root     18315  0.1  0.0      0     0 ?        S    12:51   0:01 [kworker/u8:1]
root     18397  0.0  0.0      0     0 ?        S    12:54   0:00 [kworker/3:0]
root     18457  0.0  0.4 942988 30888 pts/1    Sl+  12:56   0:00 node server.js
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     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 ?
  • Вопрос задан
  • 306 просмотров
Решения вопроса 1
sim3x
@sim3x
stackoverflow.com/questions/1323956/how-to-redirec...

потому что нужно грепать cat, отфильтровать результат грепа, взять второй столбик
ps aux | grep 'cat /dev/urandom' | grep -v grep | awk '{print $2}'


cat /dev/urandom > /dev/null
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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