четверг, 22 мая 2014 г.

Про Ctrl+Z

(перевод поста отсюда)
Сочетание клавиш Control+Z используется, чтобы "усыпить" процесс, посылая ему сигнал SIGSTOP, который не может быть перехвачен программой. А вот сочетание клавиш Control+C используется для того, чтобы "прибить" процесс с помощью посыла процессу сигнала SIGINT, который может быть перехвачен выполняющейся программой, чтобы она могла корректно освободить ресурсы перед завершением или вообще проигнорировать его.
Если вы отправили процесс "в спячку", командная оболочка сообщит вам об этом примерно так:
[1]+  Stopped                 yes
Однако, если вы "убьёте" процесс, вы не увидите какого-либо подтверждения от командной оболочки. Для усыплённых процессов доступно несколько действий. Например, выполнив команду:
fg
для приостановленной программы, мы заставим ее продолжить выполнение, взаимодействую с текущей командной оболочкой.
Выполнив команду:
bg
для приостановленной программы, мы позволим ей продолжать выполняться в фоновом режиме (однако, вывод программы всё равно будет идти на терминал).
Если вы желаете прекратить выполнение приостановленной программы, вам не обязательно возобновлять ее выполнение с помощью команды fg. Достаточно команды:
kill %1
Если вы приостановили выполнение нескольких процессов, запустите команду:
jobs
Её вывод будет содержать список приостановленных процессов:
[1]-  Stopped                 pianobar
[2]+  Stopped                 yes
Используя %#, где # - это номер задачи (цифра в квадратных скобках в выводе jobs), вместе с командами bgfg, или kill, вы можете совершать действия над необходимым процессом.

воскресенье, 18 мая 2014 г.

Если HASP License Manager не раздает лицензии

Ковырялись мы тут с переводом сервера 1C на Linux. Почти все проблемные места были закрыты. Но тут снова перестали браться лицензии с ключа. Начали вспоминать, что могли сломать (до этого-то работало), перезапускать что попало, менять версии драйверов hasp - всё было без толку. И hasp прокинулся на виртуальную машину, и его драйвера стартанули, и соединение между менеджером лицензий и драйверами активна. А оказалось всё очень просто. При конфигурационном файле по-умолчанию клиент 1С ищет сервер лицензий broadcast-ом:
[NH_TCPIP]
;;NH_SERVER_ADDR = <Addr1>, <Addr2> ; IP addresses of all the NetHASP 
; License Managers you want to search.
; Unlimited addresses and multiple
; lines are possible.
; Possible address format examples:
;  IP address:      192.114.176.65
;  Local Hostname:  ftp.aladdin.co.il
;;NH_PORT_NUMBER = <Num> ; Set the TCP/IP port number. This is
; optional. The default number is 475.
;;NH_TCPIP_METHOD = TCP or UDP ; Send a TCP packet or UDP packet
; Default:  UDP
;;NH_USE_BROADCAST = Enabled or Disabled; Use TCPI/IP Broadcast mechanism.
; Default:  Enabled
Даже если указать конкретный NH_SERVER_ADDR. Он просто брал лицензию с соседнего сервера. Ну и в купе с тем, что сервер лицензий не обращается к ключу и не показывает его до первого обращения к нему от клиента, в AKS Monitor он (ключик) не отображается. Отключив широковещательный поиск сервера и указав IP-адрес необходимого нам, получаем желаемый результат.