LINUX.ORG.RU

Избранные сообщения superuser

Как удалить файл только если он не открыт более никем?

Форум — Development

Пишу приложение, работающее в режиме «демона».

Использую PID-файл и как блокировку от повторного запуска, и как просто файл, содержащий PID процесса.

В принципе мне бы хватило алгоритма «сделал flock(LOCK_EX) после форка - сделал flock(LOCK_UN) на выходе». Для самого Perl'а этого бы хватило за глаза. Но для удобства и для порядку так сказать хотелось бы невозможного: закрывать PID-файл и затем удалять его.

Есть опасения race conditions: я могу закрыть файл, потом следующий мой инстанс получит управление и откроет его, после чего я возьму и удалю уже открытый файлик. Таким образом, будет существовать инод, содержащий PID следующего инстанса, но у файла уже не будет записи в каталоге и с точки зрения Shell-скриптов, например, PID-файл уже не будет существовать.

Сейчас попробую вариант «открыть файл - блокировать хэндлер - удалить файл - разблокировать хэндлер - закрыть файл». Выглядит последовательность странновато, но наверное должна работать...

А вообще кто что думает по этому поводу?

 , ,

DRVTiny
()

перехват клавиш

Форум — Development

Есть задача. Нужно перехватывать нажатие клавиш под X-ми и все это слаживать в файл. Написать нужно на Си.
Я так понимаю что нужно цыпляться к драйверу и обрабатывать эти события.
Дайте плиз ссылочек по теме почитать.
anonymous
()

Считывание с клавиатуры в терминале

Форум — Development

Подскажите, куда копать. Нужно отлавливать и обрабатывать нажатия кнопок клавиатуры в консольной программе. В какой части стандартной библиотеки искать? Речь не про stdin.

 , ,

Werenter
()

Видео записывалка для вашего ПеКа

Форум — Talks

Я внезапно открыл для себя утилиту slop, очень удобная и полезная в домашних делах. Ага я слоупок.
Надо было записать кусочек экрана несколько раз и удобно выделять мышкой область на экране для записи видео.

Наваял вот, может кому пригодится.

  • Переменная use_recorder задаёт то чем вы ходите записывать
    • ffmpeg
    • recordmydesktop
  • Если передать скрипту аргументы то они прокинутся к утилите записи
    • например record --no-sound если используется recordmydesktop
      • но прокидывайе аргументы с умом рм рф и прочую копипасту туда писать не надо.

Ключи под себя

  • ffmpeg быстро пишет и сразу кодирует без звука.
  • recordmydesktop со звуком и отложенным долгим кодированием

Сам использую нубский recordmydesktop так как вокруг него не надо с бубном бегать по поводу звука (он меня сломан на ПК и чисто программный идёт по сети)

touch $HOME/.local/bin/record
#copy-paste code
chmod +x $HOME/.local/bin/record
  • Прерывать запись через ctrl+C
  • Зависимости в теле написаны какие надо.

Если кажется многословным перепишете на bash, всё можно переписать на bash :)

#!/usr/bin/env lua
-----------------------------------------
-- Depends for recordmydesktop: ogv out
-- apt install lua slop recordmydesktop
-----------------------------------------
-- Depends for ffmpeg: mp4 out
-- apt install lua slop ffmpeg
-----------------------------------------
-- Use ffmpeg or recordmydesktop recorder
--local use_recorder = 'ffmpeg'
local use_recorder = 'recordmydesktop'
-------------------------------------------------------------------------------
local separator = ' '
local arguments = table.concat({...},separator)
local visualfmt = '-b 5 -c 0.5,1.0,0.5,0.8 -o'
local slop_pipe = io.popen('slop -f "%x %y %w %h" '..visualfmt)
local x,y , w,h = slop_pipe:read('*l'):match('(%d+) (%d+) (%d+) (%d+)')
-------------------------------------------------------------------------------
local out_filename = os.date('%Y-%m-%H-%M-%S');
-------------------------------------------------------------------------------
local command = {};
-------------------------------------------------------------------------------
if use_recorder == 'ffmpeg' then
   command = table.concat(
   {
       'ffmpeg ','-f x11grab';
                 '-video_size',w..'x'..h;
                 '-grab_x',x;
                 '-grab_y',y;
                 '-i :0.0';
                 '-framerate 60';
                 '-vcodec libx264';
                  arguments;
                  out_filename..'.mp4';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
if use_recorder == 'recordmydesktop' then
   command = table.concat(
   {
       'recordmydesktop','-x='..x;
                         '-y='..y;
                         '--width='..w;
                         '--height='..h;
                         '--fps=60';
                          arguments;
                         '-o',out_filename..'.ogv';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
print("[ERROR]: Bad 'use_recorder' value.")
return 1

Вроде мелочёвка, а очень и очень удобно.
Всё. Досвиданья.

 , slop, , ,

LINUX-ORG-RU
()

Удалённый доступ за NAT

Форум — Admin

Привет!

Есть ноутбук (которым пользуется родственник), на нём установлен calculate linux.

Находиться он будет за NAT (модем+маршрутизатор+точка доступа, раздаёт интернет по WiFI), который я не имею возможности администрировать (порт там пробросить или что-то такое). Кстати, не уверен, есть ли там белый IP, не помню.

Хочется иметь туда доступ по SSH… чтобы иметь возможность обновлять ПО, в первую очередь такие вещи как ядро (исправления уязвимостей) и браузер (тоже уязвимости и чтобы сайты не ломались, если долго, то есть годами не обновлять, бывает что современный сайт просто перестаёт открываться).

Какой-нибудь демон может установить… который бы устанавливал соединение, по которому я мог бы туда попадать?

Раньше я что-то такое делал на связке ipv6+ddns, но потом что-то оно перестало работать, так и не разобрался, из-за чего.

Может есть ещё какие-то варианты, которые мне в голову не пришли?

Как вариант - чтобы человек сам запустил какую-то программу, дал мне доступ к экрану, где я смог бы открыть консоль (хотя лучше и без этого)… что нынче даёт такую возможность?

ОТВЕТ: zerotier именно то, что искал, круто, что есть такой продукт, да ещё и бесплатная версия, шикарно.

P.S. ssh-j.com тоже классная штука, подкупает тем, что можно скинуть человеку в чат «запусти пару команд чтобы я к тебе смог подключиться», не надо демон настраивать.

 , , ,

BattleCoder
()

Как повесить на клавишу команду в консоли?

Форум — Desktop

Нужно назначить определённой клавише (сканкоду или что на него назначено в раскладке) выполнение какой-то команды. Без иксов, в чистой консоли. Как это сделать?

>>>

anonymous
()

Роутер за $50 для openWRT

Форум — Linux-hardware

У меня в принципе всегда был самый просто роутер, задумался поменять на что то более приличное. Есть ли достойные модели в данном сегменте заказать с али например. В крайнем случае до $60

 ,

armid
()

Прозрачный брандмауэр с маршрутизатором. Тестовая лаборатория

Новости — Интернет
Группа Интернет

В статье рассмотрено решение, требующееся при объединении прозрачного брандмауэра с маршрутизатором, используя утилиту ebtables и создание тестовой лаборатории на микродистрибутиве Linux, используя qemu и initrd на основе моей сборки busybox, включающей в себя ebtables, iptables, ssh(d), рекурсивного DNS и др.

>>> Статья полностью

 , , ,

vodz
()

Сборка разделов прошивки для ip регистратора

Форум — Linux-hardware

Здравствуйте, копаю старый рег на возможность добавления onvif протокола. На текущем момент не удается пересобрать образ файловой системы. Система squashfs, обрезаю первые 64 байта, распаковываю, упаковываю ничего не поменяв, создаю uboot с указанием оригинальных точки входа и адреса загрузки, заливаю в рег - тишина, не грузится, с оригинальным грузится. Созданый файл отличается по размеру от оригинального. Что я делаю не так? Вот файл который перепаковываю: https://dropmefiles.com/2cN6f

 , , ,

PavelVan
()

VLC, детектор движения

Форум — Multimedia

VLC - мощнейший аудиовидео плеер, но не только, с его помощью можно вести записи в видеокамеры.

Попробовал сделать на его основе видеорегистратор.
Получилось легко, т.к. в его опциях есть фича, которая называется «Детектор движения».

Можно так же его использовать и через командную строку -

vlc --video-filter=motion
В тоже время обнаружилась серьезная проблема - этот детектор слишком чувствительный и обнаруживает малейшие движения, например, шелестение даже мелких листьев на удаленном дереве, и из-за этого запись, по сути, вообще не прекращается, идет постоянно.

По идее разработчики должны были предусмотреть регулировку чувствительности детектора движения, чтобы использовать его для разных условий.
Увы, не нашел такой возможности ни в самом VLC, ни в плагинах для него

Может у вас найдутся креативные идеи?
Не хочется для такой простой задачки использовать монстров вроде ZoneMinder, AVReg, Xeoma и пр.

 ,

chukcha
()

Вернуть диски или не надо? Уговорите

Форум — Linux-hardware

Ребят, подскажите про SSD, купил сегодня две шт. Планирую заменить stripe на mirror.

У меня раньше было два диска в stripe по 120 Гб. Выглядит пока это так:

  pool: zroot
 state: ONLINE
  scan: scrub canceled on Sat Jan  6 14:47:08 2024
config:

        NAME          STATE     READ WRITE CKSUM
        zroot         ONLINE       0     0     0
          ada2p4.eli  ONLINE       0     0     0
          ada3p4.eli  ONLINE       0     0     0

errors: No known data errors
=>       40  234441568  ada2  GPT  (112G)
         40     532480     1  efi  (260M)
     532520       1024     2  freebsd-boot  (512K)
     533544        984        - free -  (492K)
     534528   16777216     3  freebsd-swap  (8.0G)
   17311744  217128960     4  freebsd-zfs  (104G)
  234440704        904        - free -  (452K)

=>       40  234441568  ada3  GPT  (112G)
         40     532480     1  efi  (260M)
     532520       1024     2  freebsd-boot  (512K)
     533544        984        - free -  (492K)
     534528   16777216     3  freebsd-swap  (8.0G)
   17311744  217128960     4  freebsd-zfs  (104G)
  234440704        904        - free -  (452K)

Я купил два диска по 240 Гб. Возник вопрос по производителю.

Изначально я рассматривал Kingston, но он был всего один в наличии. Я зачем-то решил, что лучше будет два одинаковых. Мне предложили два диска фирмы APACER.

APACER - тоже неплохая фирма, но не такая прекрасная, как Kingston. Проблема в том, что если смотреть через SMART, Kingston предоставляет практически все показатели, в то время как APACER - только половину. https://paste.ee/p/D9xLe

Пока что я не распечатал упаковку, просто заметил эту разницу, глядя на уже имеющийся у меня старый диск от APACER. Я раньше вроде знал, что SMART может не отображать определенные параметры, но почему-то не придавал этому значения. И в магазине совершенно забыл об этой детали.

Что посоветуете делать? Возвращаться в магазин не хочется, особенно учитывая, что Kingston был в наличии всего один, и мне пришлось бы ждать второй. Предпочел бы избежать этого.

 

Clockwork
()

Что с ядром?

Форум — Linux-hardware

Ещё вчера работал и температура проца была 40-42 градуса. А сегодня - от 45. Ноуты разные с intel HD, дистрибутивы - Debian 12, Ubuntu LTS, Arch. Версии ядер - 5.15 - 6.6.7.

Пробовал и на X11 - DWM и Wayland - Sway, так как канон.

FF - ESR и 121. Простой сёрф, как пример - linux.org.ru, lm-sensors показывает 46 градусов. Из дополнений - Ublock original. При старте браузера вентилятор ноута взлетает. Youtube - тоже, но потом после отрисовки успокаивается. Vaapi стоит, в FF и MPV поддерживается.

Вопрос только один владельцам ноутов. У вас тоже теперь они при прокрутке LOR показывают похожие цифры?

Добавлю, что это на фоне последних обновлений ядер. Вся эта история с Debian и ext4, а также новыми новостями о уязвимостях.

Ещё что было замечено, torrent тоже повышает на 4-5 градусов, чего раньше не было. Что за?..

Аноним помог. Надо обратить внимание на

/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference ```

 , , ,

masterOf
()

Типа Lingvo под кеды (Кубунту)

Форум — Desktop

Нужна софтина - сабж. Чтоб ПОЛНОСТЬЮ фриварный. Чтоб было много всяких словарей, под разную тематику.

Пока интересуют буржуйский и испанский. Но и другие языки не помешат.

 

torsar
()

mpv: плейлисты ютуба

Форум — Multimedia

Как скормить mpv напрямую плейлист вида

https://youtube.com/playlist?list=PLBLA-BLA-BLA
mpv как-бы берет этот плейлист, но видит и воспроизводит только первый трек.

yt-dlp без проблем видит (и скачивает) весь плейлист.

Погуглил - везде предлагается вручную создавать плейлист типа m3u. Не понятно, если yt-dlp может с ютубными плейлистами работать, то почему mpv не может.

Как его заставить хавать ютубовские плейлисты?

 , ,

Chord
()

Wi-Fi 6 AX200 не стабильная, влючается только ac

Форум — Linux-hardware

sudo rmmod iwlmvm iwlwifi

sudo modprobe iwlmvm

dmesg выводит, что подгружается firmware iwlwifi-cc-a0-66.ucode когда должно iwlwifi-cc-a0-46.ucode если верить https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html

Как исправить? куда копать?

раньше работало AX роутер показывал 100%, сейчас только AC и уровень сигнала скачет 80-100%

[ 2334.279234] Intel(R) Wireless WiFi driver for Linux
[ 2334.285243] iwlwifi 0000:06:00.0: api flags index 2 larger than supported by driver
[ 2334.285253] iwlwifi 0000:06:00.0: TLV_FW_FSEQ_VERSION: FSEQ Version: 89.3.35.37
[ 2334.285459] iwlwifi 0000:06:00.0: loaded firmware version 66.f1c864e0.0 cc-a0-66.ucode op_mode iwlmvm
[ 2334.287059] iwlwifi 0000:06:00.0: Detected Intel(R) Wi-Fi 6 AX200 160MHz, REV=0x340
[ 2334.295445] thermal thermal_zone0: failed to read out thermal zone (-61)
[ 2334.406042] iwlwifi 0000:06:00.0: Detected RF HR B3, rfid=0x10a100
[ 2334.470853] iwlwifi 0000:06:00.0: base HW address: 14:f6:d8:a1:2f:8e
[ 2334.486166] iwlwifi 0000:06:00.0 wlp6s0: renamed from wlan0

 , ,

sap78
()

X11-приложение на чистом ассемблере под Linux

Галерея — Скриншоты

Наконец закончил перевод очень крутой и интересной статьи, где описывается работа с Х-сервером на чистом ассемблере.

Как сама статья так и перевод - большие и сложные, знаний на такое у меня уже нехватает. Если есть желающие помочь с вычиткой и поиском ошибок - велкам!

На скриншоте обычная Ubuntu и Xfce, самое главное - ч0рное окошко по центру, это и есть та самая тестовая программа из статьи, написанная на чистом ассемблере и вызывающая Х-сервер через unix-сокет.

>>> Просмотр (1366x768, 988 Kb)

 , ,

alex0x08
()

Узнать, содержится ли один диапазон в другом на Си

Форум — Development

Сразу скажу что задача можно считать учебная и ответ на неё многих может показаться банальным, но мне интересно как бы вы её решили.

Условие очень простое: выражение is_contained(h0, hlen, q0, qlen) должно возвращать 1, если диапазон под вопросом (question - q), начинающийся включительно с q0 и занимающий всего qlen индексов, полностью содержится в диапазоне (have - то что имеется), начинающимся включительно с h0 и имеющим длину в hlen индексов, и должно возвращать 0 во всех других случаях. Оба диапазона относятся к индексам некоего массива или смещениям байт в файле, при том что файл целиком влез в аллоцированный блок памяти процесса в виде того же массива.

Вопрос: написать синтаксически корректную (допустим C89) реализацию функции is_contained(), такую чтобы всегда отдавала правильный результат, при этом не содержала лишнего кода и не требовала линковки с чем-то ещё, включая libc, для работы (но содержимым C89-стандартных (только их) .h файлов пользоваться можно, если оно не приводит к импорту символов извне).

Условие именно такое как я написал, никакие уточнения не предполагаются. Если считаете что условие где-то двусмысленное - дополняйте его как хотите (не противореча исходным утверждениям).

 , ,

firkax
()

Посоветуйте стартер кит(программный) для изучения схемотехники

Форум — Talks

Есть цель: разобраться в схемотехнике на таком уровне, чтобы можно было собирать простые усилители НЧ. Что нужно?

  1. Хорошая книга, чтобы там было максимально сжато сформирована информация, необходимая для того, чтобы можно было понимать, как работает схема и как ее промониторить

  2. Программа, для моделирования схем, с проверкой их корректности и работы

 

serg002
()

Удаленный терминал (поверх ssh) с показом картинок?

Форум — Development

Есть сервер который что то долго и много считает и генерит кучу данных. Я могу войти туда по ssh. Хочется из этих данных строить картинки (графики y(x), как правило гнуплотом), при этом сами данные к себе не выкачивать. И хочется эти картинки сразу видеть, без всяких scp/sshfs, прямо вот в терминале. Без какого то интерактива вроде выделения фрагментов, смены масштаба и пр - просто увидеть картинку глазами, эдакий предпросмотр данных.

Вход по ssh -X или vgl работает но лагает жутко, канал все таки хиленький. У gnuplot-а есть терминал dumb:

gnuplot> set term dumb
gnuplot> plot x**2

                                                                               
  100 +--------------------------------------------------------------------+   
      |*               +                 +                +               *|   
   90 |-+..............:.................:................:..............+-|   
      |  *             :                 :                :             *  |   
   80 |-+..............:.................:................:..............+-|   
      |    *           :                 :                :           *    |   
   70 |-+..............:.................:................:..............+-|   
      |      *         :                 :                :         *      |   
   60 |-+..............:.................:................:..............+-|   
   50 |-+..............:.................:................:..............+-|   
      |         **     :                 :                :     **         |   
   40 |-+..............:.................:................:..............+-|   
      |            **  :                 :                :  **            |   
   30 |-+..............:.................:................:..............+-|   
      |               *:                 :                :*               |   
   20 |-+..............:.................:................:..............+-|   
      |                :  ***            :           ***  :                |   
   10 |-+..............:.................:................:..............+-|   
      |                +       *****     +    *****       +                |   
    0 +--------------------------------------------------------------------+   
     -10              -5                 0                5                10  

вот что то такого плана, только конечно качеством повыше.

У кого какие идеи?

Можно конечно свою обертку поверх ssh написать что бы она умела и картинки отрисовывать, но неужто никто ничего такого не сделал?


Решается применением терминала sixelgd в гнуплоте. Его не всякий терминал поддерживает, я в итоге остановился на mlterm (konsole и xterm не взлетели).

https://www.arewesixelyet.com/#xterm

 , ,

AntonI
()

Импортозамещаемся

Форум — Talks

Поговорим о флюсах. Я уже очень долгое время использую немецкий Ersa FMKANC32, и полностью им доволен, однако он неожиданно, как приход зимы, закончился, новый я не заказал, а брать официально - я не миллиардер. Так что были куплены в ближайшем лабазе тоже именитый американский Fluxplus 612 и расово отечественный Rusflux HR-500-LK. Также в сравнении будет участвовать китайский Kingbo RMA-218.

Активность
Самый активный китаец. Американец менее, наш ещё менее. То есть для облуживания ржавых гвоздей не подойдёт. Однако это не вазелин, и его активности более чем достаточно для пайки SMD и BGA, то есть на слабоокисленных контактах.

Проводимость
Мегаомметра у меня нет, потому такие тесты не делал. Однако они есть на ютубе, и русфлюкс даже в неактивированном состоянии укладывается в ГОСТ (100 МОм). Китаец же и после активации имеет весьма высокую проводимость, особенно это будет заметно на линиях данных. Паял как-то мультиконтроллер им, курсор тачпада офигевал. Для пайки BGA использовать его нельзя категорически, только полная отмывка. Американец тут нареканий не вызывает, но его тоже желательно отмывать.

Кипучесть
Почти не кипит, даже в больших количествах. Китай, кстати, тоже не особо кипучий, а вот от флюксплюса может и микруху сдвинуть.

Отмывка
Наш - несомненный лидер, отмывается одним движением кисти. Флюксплюс заметно хуже, китайский говнилин надо греть что бы отмыть.

Запах
Российский вообще почти не пахнет. Америка пахнет химическим ароматизатором лимона. Мне этот запах, кстати, нравится (я токсикоман), но окружающие не в восторге. Эрса воняет химией и тухлыми носками, а кингбо как 30 эрс одновременно.

В остальных сравнениях эрса не упоминалась, поскольку примерно аналогична efd fluxplus, только менее активна.

Я сегодня отреболлил и припаял на HR-500-LK интеловский комбинированный процессор, снял и поставил на родных бессвинцовых шарах амдшный север rs880, поменял мультиконтроллер. То есть, по сути, самые сложные задачи, провода паять и канифолью можно. Впечатления отличные. С учётом того что rusflux дешевле fluxplus в 4 раза, а эрсы, если смотреть официальный ценник, в 16 (иначе в 5), а качество одинаковое по сути, то не вижу смысла платить больше. Хватит кормить Америку!

Дешевле всех, конечно, Китай. Он, можно сказать, бесплатный. Банка 100 г. стоит 370 рублей, а с каким-то купоном я её взял за 100. Для проводов и разъемов пойдёт. Для чего-то серьёзного - нет.

Закажу завтра остальной ассортимент отечественного производителя. Особенно интересен NRK-518-A, он более активен, чем обозреваемый, и работает до 350 градусов, под паяльник самое то. А этот всё же больше для бесконтактной пайки.

 , ,

K50
()