список процессов с аргументами в кавычках, переносимый

Существует модуль с именем tp _smapi .

Например, вы можете изменить порог следующим образом:

echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
cat /sys/devices/platform/smapi/BAT0/*_charge_thresh

По ссылке также есть скрипт, который позволит выбрать аккумулятор, который будет разряжаться в первую очередь.

2
11.02.2020, 21:51
1 ответ

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

Спецификация POSIX изpsне указывает точно, как форматируется поле args, просто оно содержит «команду со всеми ее аргументами в виде строки» и что оно может быть усечено. На практике все реализации, которые я видел, объединяют аргументы с пробелом между ними. Это лучшее, что вы можете сделать с POSIX.

Если вам нужно однозначное представление аргумента командной строки процесса, вы можете найти его в /proc/PID/cmdlineв Linux и других вариантах Unix с файловой системой Solaris -, подобной proc (, а не в системах BSD, таких как macOS ). Аргументы разделены нулевыми байтами, которые не могут появляться в аргументе, поэтому представление однозначно. Я не думаю, что есть способ получить эту информацию с помощью утилиты Linux procps ps, и даже если бы он был, он был бы специфичен для Linux, поэтому он не был бы более переносимым (менее переносимым, на самом деле, так как просмотр внутри /procработает даже на ядрах Linux, которые имеют другую утилиту ps, такую ​​как утилита BusyBox ).

Я не знаю, как получить однозначное представление аргументов командной строки в macOS.

Я знаю одну программу, которая сделала не -переносимую часть :библиотеки Python psutil. Я могу подтвердить, что это позволяет получить однозначное представление командной строки процесса в Linux. Это также должно работать на macOS, поскольку в документации не упоминается никаких ограничений, но я не проверял.

python3 -c 'import os, psutil; print(psutil.Process(os.getpid()).cmdline())'
2
28.04.2021, 23:23

Теги

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