https://stackoverflow.com/questions/818255/what-does-21-mean #StackOverflow #techjargon #corporatebuzzwords #codinghumor #HackerNews #ngated
Umleitungen – Ausgabe- und Eingabekanäle in der Bash-Shell umleiten
Als Systemadministrator leitest du täglich Ausgaben von Befehlen um, um Logs zu sichern, Fehler zu isolieren oder Skripte zu automatisieren. Umleitungen helfen dir, stdout und stderr gezielt in Dateien zu schreiben, ohne dass der Bildschirm überflutet wird. Sie sind essenziell für effiziente Troubleshooting und Script-Entwicklung in jeder Linux-Umgebung. Standardausgabe umleiten Die Standardausgabe (stdout, Dateideskriptor 1) leitest du mit dem Operator > in eine Datei um. Die Shell […]https://andreas-moor.de/umleitungen-ausgabe-und-eingabekanaele-in-der-bash-shell-umleiten/
stdin, stdout und stderr –Standarddatenströme von Linux-Prozessen
Wenn du mit der Bash-Shell interagierst brauchst du ein solides Vertändnis von stdin, stdout und stderr, sie bilden die Standardein- und Ausgaben auf Linux-Systemen. An sich ist jede art von Programm dafür gedacht Daten zu empfangen diese auf spezifische Art und Weise zu verarbeiten und nach der Verarbeitung auszugeben. Das lenken der Datenflüsse kann genau mit diesem Verständnis bewusst tun. Was ist stdin? stdin steht für Standard Input und repräsentiert den Eingabestrom eines jeden […]https://andreas-moor.de/stdin-stdout-und-stderr-standarddatenstrome-von-linux-prozessen/
Файловые дескрипторы 0, 1, 2: полное руководство по работе с потоками
Привет, Хабр! Конструкции вроде 2>&1 и &> встречаются повсюду — в мануалах, скриптах, инструкциях. Их используют постоянно, но редко понимают до конца. Почему ошибки продолжают появляться в терминале, хотя, казалось бы, должны уходить в файл? Почему конвейер передаёт только часть вывода? В статье разберём всё от базового синтаксиса до работы с tee и /dev/null - каждая часть будет разобрана и показана на практических примерах.
Found an issue and fixed it. Turns out destroying my #Process instance when the child exited was wrong, there could still be unread data in the #pipe. But then, only waiting for #EOF on the pipe was equally wrong ...
Now the code does the only reliable thing:
* When the child terminated, close the pipe for stdin immediately if one was present
* Only destroy the process instance once the child terminated AND the pipes for #stdout and #stderr (IF they were present) found EOF.
Committed now:
https://github.com/Zirias/poser/commit/18051d9da0ba7e4caf2882828e5706e35d419f94
And here are the docs:
https://zirias.github.io/poser/api/latest/class_p_s_c___process.html
My testing code also had to change a bit and now makes for a completely pointless and cute wrapper around /bin/ls 🙈 😂
Надоело просто добавлять запись в log-файл. Что еще можно сделать с помощью syslog-ng в Astra Linux SE?
Всем привет! Меня зовут Михаил, и в своей предыдущей статье я кратко осветил цепочку прохождения логов в ОС Astra Linux SE. Продолжаем! Любой человек, который регулярно сталкивается с темой логирования, рано или поздно задаётся вопросом: «А что ещё можно сделать с логами, помимо простого добавления записей в некоторый файл?» Поэтому сейчас поговорим о таком мощном инструменте обработки логов, как syslog-ng . Читать
https://habr.com/ru/companies/astralinux/articles/845936/
#логирование #syslogng #astralinux #linux #макросы #stdout #bashскрипт #парсер #субд #python
I was going to ask how many system calls it was making. If the Go runtime library is choosing no buffering when the standard output is the null device, that could be a lot of syscalls, compared to full buffering.
How is the Go runtime library deciding what buffering policy to use for standard streams? Is it even using buffers for standard streams? Does it vary that decision for character and TTY devices?
Зазвичай друга програма кожного програміста який починає вивчати мову програмування це hello {name}.
Спочатку треба трохи розʼяснити про ghc, ghci і функцію main.
ghc - це компілятор мови програмування Haskell.
ghci - це інтерпретатор мови програмування.
функція main - це головна функція яка автоматично викликається при запуску бінарного файлу зібраного за допомогою ghc. Вона не обовʼязкова для запуску в режимі інтерпретації.
У функціональних мовах, до яких належить Haskell, немає змінних. Є тільки функції та константи. Константа це функція яка повертає завжди одне значення не залежачи від жодних обставин.
Всі файли з джерельним кодом називаються модулями. Є спеціальне оголошення модулів, але про це пізніше.
Також є різниця між написанням коду в файлі й виконанням в інтерактивному режимі інтерпретатора. В інтерпретаторі ми можемо виконати будь-яку інструкцію, наприклад putStrLn "Hi!", а в модулі ні. У модулі можна тільки створювати функції.
Однорядкові коментарі починаються з двох мінусів -- Comment.
Тепер перейдемо до нашої програми. У єдиній попередній нашій функції в нас була одна команда. Виклик функції putStrLn з передаванням аргументу. Тепер нам потрібно вписати кілька команд, і щоб це зробити потрібно використати ключове слово do. Після нього можна вписати кілька команд розділені ;, або новим рядком. Але кожний новий рядок повинен починатися з певного відступу. Відступ може бути або пробілом, або табуляцією. Кількість символів може бути різною, але кожний наступний рядок повинен мати, або ту ж кількість пробілів, або більше. Якщо буде менше, то це вважатиметься новим оголошенням. Також один символ табуляції буде розглядатись як вісім пробілів, не залежно від налаштувань редактора.
main = do
putStr "Введіть ваше ім'я: " -- Вивід тексту в stdout
name <- getLine -- зчитування з клавіатури одного рядка з stdin
putStrLn ("Привіт, " ++ name ++ "!") -- Вивід привітання в stdout
Оператор ++ обʼєднує рядки в один. У інших мовах для цього використовується оператор, який складається з одного символу +.
Все було б добре, якби не одна проблема. Коли ми запустимо цю програму, то отримаємо не зовсім очікуваний результат.
Мертвий Демон
Введіть ваше ім'я: Привіт, Мертвий Демон!
Ця програма спочатку буде очікувати на ввід, а потім виведе на екран весь текст. Це відбувається через буферизацію. Вивід відбувається при вписуванні символу нового рядка. Але ми можемо змусити його вивести тоді коли нам це потрібно. Ця функція називається flush. У Haskell вона знаходиться у модулі System.IO, який нам потрібно імпортувати.
import System.IO
main = do
putStr "Введіть ваше ім'я: "
hFlush stdout
name <- getLine
putStrLn ("Привіт, " ++ name ++ "!")
Ця програма буде працювати вірно.
#haskell #hello-name #programing #програмування #друга #програма #stdout #stdin #функції #вивід #ввід #екран #клавіатура #зчитування #flush
The best tool to debug the outputs (#stdout, #stderr) is so far the #lolcat https://github.com/busyloop/lolcat
I needed to debug a broken function https://github.com/Felixoid/dotfiles/blob/06fed7e8bc2b42c552182866961342f13dbd35cc/config/shells/rc#L91, and it's a bit messy to get the output together with `set -x` [1]. So lolcat improves it significantly [2].
Sure, I need both of them, but w/o lolcat I am not even sure, what to use ¯\_(ツ)_/¯