Как я могу изменить заголовок команды при запуске сервера?

Сработало использование звукового активатора и AAXtoMP3 . С помощью нескольких настроек AAXtoMP3 также преобразуется в FLAC.

2
18.05.2017, 23:46
2 ответа

Спасибо @Stéphane за отличный ответ. Но в моем случае лучшим решением было объединить мои скрипты в качестве приложения для Mac OSX. Вы можете управлять именем своего процесса в файле Info.plist вашего проекта.

0
27.01.2020, 22:40

Вам нужно установить имя процесса. В некоторых системах присвоение значения $0 будет работать, но не в Linux (по крайней мере, не с моей версией ruby), где ruby только устанавливает аргумент список (как показано в ps -f или ps -o args), но не имя процесса (как в lsof или ps /ps -o comm) (perl -e '$0 = "foo"' будет работать, поскольку perl устанавливает и имя процесса, и список аргументов).

Для этого в Linux вам нужно сделать:

prctl(PR_SET_NAME, "newname")

системный вызов.

Хотя вы могли бы сделать:

$ ruby -e 'syscall(157, 15, "foo"); system("ps")'
  PID TTY          TIME CMD
5679 pts/4    00:00:01 zsh
8639 pts/4    00:00:00 foo
8641 pts/4    00:00:00 ps

Значение системного вызова будет зависеть от архитектуры (здесь 157 для amd64).

Однако поиск prctl в исходном коде ruby ничего не дает, поэтому я подозреваю, что в ruby для него нет стандартной поддержки. ]. Process.setproctitle() также не устанавливает имя процесса.

@Jessehz на SO предлагает решение, использующее fiddle для вызова функции pctrl() в библиотеке C (при условии, что динамически подключаемый ruby Я полагаю):

$ ruby -e 'require "fiddle"; Fiddle::Function.new(
  Fiddle::Handle["prctl".freeze], [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP],
  Fiddle::TYPE_INT).call(15, "foo"); system("ps")'
  PID TTY          TIME CMD
 5931 pts/5    00:00:02 zsh
 8943 pts/5    00:00:00 foo
 8945 pts/5    00:00:00 ps
0
27.01.2020, 22:40

Теги

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