Имя: Пароль:
1C
 
Как в Linux в коде 1С получить командную строку с которой запущен текущий процесс?
,
0 TormozIT
 
гуру
25.04.21
08:33
У меня линукса нет. Но хочу добавить его поддержку программе на 1С.
Как в Linux в коде 1С получить командную строку с которой запущен текущий процесс?
1 Кирпич
 
25.04.21
08:55
А в windows как?
2 Biker
 
25.04.21
08:56
(0) скрипт надо, найти id процесса и по нему вынуть  
cat /proc/<pid>/cmdline
3 TormozIT
 
гуру
25.04.21
09:01
(2) Пример результата этой команды есть?
Как pid определить?
4 Biker
 
25.04.21
09:05
(3) вот так должно получится cat /proc/$PPID/cmdline

вывод /opt/1cv8/x86_64/8.3.18.1363/rphost-range1560:1591-reghostИмяХоста-regport1541-pid436a356c-54bd-4d6c-9198-ea9f92a74fa2-debug-tcp
5 TormozIT
 
гуру
25.04.21
09:07
(4) Че т не понял. Символ "-" в линуксе не может быть частью имени файла или кто то удалил пробелы?
6 Biker
 
25.04.21
09:09
(5) кто-то удалил, перед -, пробелы
7 TormozIT
 
гуру
25.04.21
09:13
(6) Можешь у того, кто удалил, попросить оригинальный результат команды?
8 TormozIT
 
гуру
25.04.21
09:15
Следующий шаг - получить в коде 1С в linux результат консольной команды. Есть пример или готовый универсальный код?
9 GANR
 
25.04.21
09:22
(3) ps -e | grep -i 1c что получится?
10 TormozIT
 
гуру
25.04.21
09:24
(9) Если ты меня спрашиваешь, то что из слов "У меня линукса нет" (0) тебе не понятно?
11 acht
 
25.04.21
09:29
(8) Через перенаправление вывода в файл и чтение его из 1С. Готовый универсальный код.
12 acht
 
25.04.21
09:30
(0) > У меня линукса нет. Но хочу добавить его поддержку
Оно так не работает, к сожалению. Надо поставить, чтобы хотя бы проверить свои труды.
13 TormozIT
 
гуру
25.04.21
09:48
(12) К счастью, работает, когда есть заинтересованные пользователи.
14 Biker
 
25.04.21
09:50
(7) Посмотрел, там вместо пробела (hex 20)  нуль (hex 00) выводит

накидал код, работает, но вывод надо разбирать, ругается на 00 , функции из БСП

ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
КомандаЗапуска = Новый Массив;
КомандаЗапуска.Добавить("cat");
КомандаЗапуска.Добавить("/proc/$PPID/cmdline");

Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы);
ОбщегоНазначения.СообщитьПользователю(Результат.ПотокВывода);
15 Biker
 
25.04.21
09:52
ПотокВывода=/opt/1cv8/x86_64/8.3.18.1363/rphost -range 1560:1591 -reghost ИмяХоста -regport 1541 -pid 436a356c-54bd-4d6c-9198-ea9f92a74fa2 -debug -tcp
16 TormozIT
 
гуру
25.04.21
09:56
(14) Спасибо. Уже большая часть задачи решена.
Остается понять как PID определить и желательно наджено. Поиск в списке процессов по имени файла - не очень надежным кажется.
17 acht
 
25.04.21
09:58
(13) Отладка на пользователях продуктива, как это по 1Сному.
18 Biker
 
25.04.21
09:58
(16) дак яж тебе дал уже рабочий код, ничего больше не надо определять.
$PPID - это как раз переменная окружения текущего процесса.
19 TormozIT
 
гуру
25.04.21
09:59
(18) Теперь понял.
20 GANR
 
25.04.21
11:44
(10) Не понятно в чем проблема поставить - выкачать ISO-образ системы и в VirtualBox установить. Ubuntu, к примеру, реально проще чем Windows ставить, можно и CentOS.