⚡️ Быстрый Linux-совет
Хочешь узнать, как давно работает процесс?
Используй колонку etime в команде
Пример для Nginx:
Идеально, чтобы быстро найти долго работающие или зависшие процессы.
Хочешь узнать, как давно работает процесс?
Используй колонку etime в команде
ps — она показывает, сколько времени прошло с момента запуска процесса. Пример для Nginx:
ps --forest -C nginx -o ppid,pid,cmd,etime
Колонка ETIME выводит аптайм процесса в формате:
[[DD-]hh:]mm:ss
Идеально, чтобы быстро найти долго работающие или зависшие процессы.
👍21🔥9❤6
Если ты замечал у кого-то красивый цветной вывод
ping, df или ps — скорее всего, это grc (Generic Colourizer). Он добавляет цветовую подсветку для множества CLI-инструментов прямо “из коробки”:
df, lsblk, free, ping, ps и других. 📦 Установи через пакетный менеджер:
sudo dnf install grc
🔧 Для Bash добавь в ~/.bashrc:
GRC_ALIASES=true
[[ -s "/etc/profile.d/grc.sh" ]] && source /etc/profile.d/grc.sh
и перезагрузи оболочку:
source ~/.bashrc
🔮 Для Zsh — добавь в ~/.zshrc:
[[ -s "/etc/grc.zsh" ]] && source /etc/grc.zsh
и обнови сессию:
source ~/.zshrc
Теперь твой терминал будет не просто информативным, а стильным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28❤11👌5💅5🔥1🥱1
🔥 Мониторинг нагрузки на сервер
Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️
📌 Как использовать:
1. Сохраните в файл, например
2. Сделайте исполняемым:
3. Запускайте при необходимости:
Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀
Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️
#!/bin/bash
# автор: https://xn--r1a.website/bash_srv
echo "=== Топ-5 процессов по CPU ==="
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 6
echo ""
echo "=== Топ-5 процессов по RAM ==="
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 6
📌 Как использовать:
1. Сохраните в файл, например
top_procs.sh2. Сделайте исполняемым:
chmod +x top_procs.sh
3. Запускайте при необходимости:
./top_procs.sh
Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀
❤19👍8🔥8
Forwarded from Golang
Проект ArchRiot пытается переосмыслить классический Arch:
— установка через Go-based installer
— обновления и управление системой тоже на Go
— цель проекта - стабильный rolling-release без боли и ломаний
Идея проста: взять дух Arch, но сделать его более удобным, эффективныи и современным по tooling'у.
Интересный эксперимент для тех, кто любит Arch, но хочет больше автоматизации и меньше ручной магии в bash.
🔗 archriot.org
@Golang_google
#linux #golang #archlinux
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔25❤9😁2
📌 20 ключевых навыков для Linux-администратора
Если хочешь уверенно работать с Linux в DevOps/инфраструктуре — вот карта, по которой можно идти:
— Командная строка: cd, ls, ps, top, tmux, ssh
— Права и пользователи: chmod, chown, группы, sudo
— SSH-ключи и безопасность доступа
— Firewall: iptables, ufw
— Резервные копии: rsync, cron
— Bash/Python скриптинг для автоматизации
— Package managers: apt, yum, dnf
— Network troubleshooting: ping, traceroute, netstat, ss, ip
— Процессы: ps, top, systemd
— Диски: df, du, fdisk, LVM
— Git и контроль версий
— Контейнеры: Docker, Podman + основы Kubernetes
— Конфигурационное управление: Ansible, Puppet, Chef
— Облака: AWS/Azure/GCP
— CI/CD: Jenkins, GitLab CI, GitHub Actions
— Мониторинг: Prometheus, Grafana, ELK
— IaC: Terraform, CloudFormation
— Оркестрация: Kubernetes, Docker Swarm
— Сертификации: AWS, RHCE, CKA
— Постоянное обучение и практика
Linux — это фундамент для DevOps, SRE и облачной инфраструктуры.
Освой базу, автоматизируй рутину и прокачивайся каждый день 🚀
#linux #devops #sysadmin #infrastructure #cloud
Если хочешь уверенно работать с Linux в DevOps/инфраструктуре — вот карта, по которой можно идти:
— Командная строка: cd, ls, ps, top, tmux, ssh
— Права и пользователи: chmod, chown, группы, sudo
— SSH-ключи и безопасность доступа
— Firewall: iptables, ufw
— Резервные копии: rsync, cron
— Bash/Python скриптинг для автоматизации
— Package managers: apt, yum, dnf
— Network troubleshooting: ping, traceroute, netstat, ss, ip
— Процессы: ps, top, systemd
— Диски: df, du, fdisk, LVM
— Git и контроль версий
— Контейнеры: Docker, Podman + основы Kubernetes
— Конфигурационное управление: Ansible, Puppet, Chef
— Облака: AWS/Azure/GCP
— CI/CD: Jenkins, GitLab CI, GitHub Actions
— Мониторинг: Prometheus, Grafana, ELK
— IaC: Terraform, CloudFormation
— Оркестрация: Kubernetes, Docker Swarm
— Сертификации: AWS, RHCE, CKA
— Постоянное обучение и практика
Linux — это фундамент для DevOps, SRE и облачной инфраструктуры.
Освой базу, автоматизируй рутину и прокачивайся каждый день 🚀
#linux #devops #sysadmin #infrastructure #cloud
❤28👍13🔥12
Нужно повторять команду каждые несколько секунд?
Используй:
$ watch -n 2 df -h
Эта команда запускает df -h каждые 2 секунды — удобно, чтобы следить за:
- загрузкой диска
- нагрузкой на систему
- изменением размеров логов
Нажми q, чтобы выйти.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤11👍10👌1😍1
🧠 Как точно проверить потребление памяти процессом в Linux
Когда система начинает тормозить или заканчивается RAM, первое, что нужно сделать - понять, какой процесс "жрёт" память.
Инструменты вроде
Процесс может казаться тяжёлым, хотя большая часть его памяти *разделяется* с другими.
А лёгкий на вид, наоборот, использовать кэш и общие библиотеки, о которых вы не узнаете из простого вывода
Чтобы реально понять, что происходит, нужно заглянуть глубже, в файловую систему /proc.
Там лежит файл smaps, показывающий подробное распределение памяти по каждому процессу.
Перед тем как разбирать
- VSZ — виртуальная память процесса (всё, включая swap и shared).
- RSS — резидентная память (физически занятая в RAM).
- PSS — пропорциональное использование (реальный вклад процесса с учётом shared-страниц).
📘 Подробный гайд с разбором
Когда система начинает тормозить или заканчивается RAM, первое, что нужно сделать - понять, какой процесс "жрёт" память.
Инструменты вроде
ps и top дают базовую картину, но часто вводят в заблуждение.Процесс может казаться тяжёлым, хотя большая часть его памяти *разделяется* с другими.
А лёгкий на вид, наоборот, использовать кэш и общие библиотеки, о которых вы не узнаете из простого вывода
top.Чтобы реально понять, что происходит, нужно заглянуть глубже, в файловую систему /proc.
Там лежит файл smaps, показывающий подробное распределение памяти по каждому процессу.
Перед тем как разбирать
smaps, стоит понять три ключевых метрики:- VSZ — виртуальная память процесса (всё, включая swap и shared).
- RSS — резидентная память (физически занятая в RAM).
- PSS — пропорциональное использование (реальный вклад процесса с учётом shared-страниц).
📘 Подробный гайд с разбором
/proc/<pid>/smaps и примерами: https://blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux❤12👍10❤🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Что внутри:
- Выполняет любые команды и сразу строит графики по их выводу.
- Следит за БД, CPU, сетью, очередями и деплой-скриптами.
- Отправляет алерты, если метрика выходит за пределы нормы.
- Настраивается через понятный YAML — пару строк, и ты уже видишь, как «дышит» система.
- Работает локально, без облаков и внешних зависимостей.
https://github.com/sqshq/sampler
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤8👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Точность ответов и скорость бота выросла на 35%!
Попробуйте бесплатно: бот пишет тексты, решает задачи по фото, озвучивает тексты любым голосом и генерирует любые фото с вами, все прямо в тг: t.me/Chatgpturbobot
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Не всегда нужно открывать ping или traceroute. Сетевые утилиты ip и ss дают всё прямо из коробки — компактно и без мусора
# Узнать, какой IP и интерфейс будет использоваться для подключения
ip route get 8.8.8.8
# Проверить, что слушает нужный порт
sudo ss -tulnp | grep :22
# Посмотреть ARP-кеш (устройства в локальной сети)
ip neigh show
# Проверить активные TCP-соединения с информацией о процессах
sudo ss -tanp
# Быстро посмотреть все интерфейсы и их IP
ip -brief addr
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍7❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Python: Как просто загрузить файл по SSH
Хочешь загрузить файл на удалённый сервер по SSH прямо из Python-скрипта? Это легко сделать с помощью библиотеки paramiko - она предоставляет чистую и надёжную реализацию SSH-протокола.
Просто установи paramiko (
Убедись, что у пользователя есть права на запись в целевую директорию на сервере. Подписывайся, больше фишек каждый день!
Хочешь загрузить файл на удалённый сервер по SSH прямо из Python-скрипта? Это легко сделать с помощью библиотеки paramiko - она предоставляет чистую и надёжную реализацию SSH-протокола.
Просто установи paramiko (
pip install paramiko), укажи данные подключения и используй SFTP-сессию для отправки файла. Убедись, что у пользователя есть права на запись в целевую директорию на сервере. Подписывайся, больше фишек каждый день!
import paramiko
Настройки подключения
hostname = "your-server.com"
port = 22
username = "your_username"
password = "your_password" # или используй ключ вместо пароля
Локальный и удалённый пути
local_file = "local_file.txt"
remote_file = "/remote/path/local_file.txt"
Создаём SSH-клиент
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(hostname, port=port, username=username, password=password)
# Открываем SFTP-сессию и загружаем файл
sftp = ssh.open_sftp()
sftp.put(local_file, remote_file)
sftp.close()
print("Файл успешно загружен!")
except Exception as e:
print(f"Ошибка: {e}")
finally:
ssh.close()
❤10👍5👎3🔥1
Кто идёт на Kuber Conf by AOT 4 декабря?
Первая некоммерческая K8s-конференция в Москве — отличный повод встретиться и обсудить:
🟣 Как на самом деле работает CNI chaining в продакшене
🟣 Как безопасно развернуть Gatekeeper для k8s-in-k8s
🟣 Поддержку Kubernetes в Vitastor
🟣 Опыт построения Managed Kubernetes
На ивенте будут топовые инженеры и архитекторы — будет о чём поговорить.
Конференция проходит под эгидой Ассоциации облачно-ориентированных технологий (АОТ), которую создают Флант, VK Cloud и Yandex Cloud.
Встречаемся?
Программа и билеты: https://aot-kuberconf.ru/?utm_source=telegram&utm_medium=referral_cpc&utm_campaign=linuxacademiya
Реклама Садовская.Е.О
ИНН:9710066394 Erid:2VtzqvwbCGQ
Первая некоммерческая K8s-конференция в Москве — отличный повод встретиться и обсудить:
🟣 Как на самом деле работает CNI chaining в продакшене
🟣 Как безопасно развернуть Gatekeeper для k8s-in-k8s
🟣 Поддержку Kubernetes в Vitastor
🟣 Опыт построения Managed Kubernetes
На ивенте будут топовые инженеры и архитекторы — будет о чём поговорить.
Конференция проходит под эгидой Ассоциации облачно-ориентированных технологий (АОТ), которую создают Флант, VK Cloud и Yandex Cloud.
Встречаемся?
Программа и билеты: https://aot-kuberconf.ru/?utm_source=telegram&utm_medium=referral_cpc&utm_campaign=linuxacademiya
Реклама Садовская.Е.О
ИНН:9710066394 Erid:2VtzqvwbCGQ
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
🏆 FuzzForge
AI-платформа для автоматизации рабочих процессов и управления агентами в AppSec, фаззинге и offensive security.
🔍 Ключевые возможности
• 🤖 AI-агенты — для анализа кода, реверс-инжиниринга и фаззинга.
•🛠 Workflows as Code — описывайте и запускайте AppSec-процессы декларативно.
• 📈 Масштабируемое исследование уязвимостей - находите как 1-day, так и 0-day.
• 🔗 Интеграции с фаззерами — Atheris (Python), cargo-fuzz (Rust), OSS-Fuzz (в разработке).
• 🏢 Enterprise-ready — облачные тарифы для команд и корпоративного использования.
•
https://github.com/FuzzingLabs/fuzzforge_ai
AI-платформа для автоматизации рабочих процессов и управления агентами в AppSec, фаззинге и offensive security.
🔍 Ключевые возможности
• 🤖 AI-агенты — для анализа кода, реверс-инжиниринга и фаззинга.
•🛠 Workflows as Code — описывайте и запускайте AppSec-процессы декларативно.
• 📈 Масштабируемое исследование уязвимостей - находите как 1-day, так и 0-day.
• 🔗 Интеграции с фаззерами — Atheris (Python), cargo-fuzz (Rust), OSS-Fuzz (в разработке).
• 🏢 Enterprise-ready — облачные тарифы для команд и корпоративного использования.
•
https://github.com/FuzzingLabs/fuzzforge_ai
❤4🔥3
Обнаружены несколько серьёзных уязвимостей в Rust-клоне sudo - который поставляется вместе с Ubuntu 25.10 (самым свежим релизом).
И это не мелкие баги: речь идёт о утечке паролей и полном обходе аутентификации.
Более того, каждые несколько дней появляются новые отчёты о критических проблемах в утилитах, переписанных на Rust (таких как
Что, конечно же, в точности совпадает с тем, о чём предупреждали заранее.
Но не переживайте!
Зато эти Rust-клоны полностью безопасны с точки зрения управления памятью 😎
https://lists.debian.org/debian-security-announce/2025/msg00218.html
И это не мелкие баги: речь идёт о утечке паролей и полном обходе аутентификации.
Более того, каждые несколько дней появляются новые отчёты о критических проблемах в утилитах, переписанных на Rust (таких как
sudo, du, date и другие), которые пришлось включить в Ubuntu до того, как они прошли полноценное тестирование.Что, конечно же, в точности совпадает с тем, о чём предупреждали заранее.
Но не переживайте!
Зато эти Rust-клоны полностью безопасны с точки зрения управления памятью 😎
https://lists.debian.org/debian-security-announce/2025/msg00218.html
😁61❤6👍3💊1🤷1
🔥 Подборка полезных ресурсов для программистов.
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://xn--r1a.website/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://xn--r1a.website/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://xn--r1a.website/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://xn--r1a.website/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://xn--r1a.website/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://xn--r1a.website/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:https://xn--r1a.website/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://xn--r1a.website/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
❤6👍1🐳1
Иногда вам нужно понять, какая программа грузит диск, но
iotop показывает нули или половину правды. Есть скрытый системный счётчик, который даёт гораздо более точную картину — прямой просмотр I/O активности процессов через
/proc.Вот супер-полезный трюк:
grep -r . /proc/*/io 2>/dev/null | grep -E "read_bytes|write_bytes"
``
Что это показывает:
- real-time количество байтов, прочитанных процессом
- реальную запись на диск (даже если она буферизована)
- даже те процессы, которые iotop не показывает из-за прав или специфики I/O
Если хотите увидеть топ процессов по I/O — вот более наглядная команда:
```bash
for p in /proc/[0-9]*/io; do
pid=${p#/proc/}; pid=${pid%/io}
rb=$(grep read_bytes $p | awk '{print $2}')
wb=$(grep write_bytes $p | awk '{print $2}')
echo "$pid $rb $wb"
done | sort -k2 -nr | head
Она выводит:
- PID
- total read_bytes
- total write_bytes
и сортирует по самым «прожорливым» процессам.
Полезно, когда:
- диск “тормозит”, но виновник не виден
- iotop пустой из-за отсутствия kernel-трассировки
- скрытый сервис, демон или контейнер делает неожиданные операции
- нужно профильнуть I/O на проде без установки дополнительных инструментов
Это один из самых достоверных способов увидеть настоящую картину дисковой активности в Linux — прямо из ядра.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28❤9
⚡️ Быстрый совет по Linux
Работаете с CSV в терминале? Сделайте вывод читабельным одной командой:
-s , указывает использовать запятую как разделитель
-t выравнивает данные в виде аккуратной таблицы
Идеально для быстрого просмотра данных без открытия таблиц или Excel
Работаете с CSV в терминале? Сделайте вывод читабельным одной командой:
cat inventory.csv | column -t -s ,
-s , указывает использовать запятую как разделитель
-t выравнивает данные в виде аккуратной таблицы
Идеально для быстрого просмотра данных без открытия таблиц или Excel
🔥23❤7👍3
Хитрая и полезная консольная фишка 🐧💡
Если хочешь быстро повторить последнюю команду, но с небольшой правкой, не нужно заново её печатать.
Используй:
fc
Эта команда откроет последнюю введённую команду в твоём $EDITOR (обычно nano или vim).
Исправляешь, сохраняешь — и она автоматически выполняется.
Пример:
1. Ты написал команду с ошибкой
2. Вводишь
3. Правишь одну букву
4. Сохраняешь
5. Команда запускается сразу с исправлением
Очень удобно, когда работаешь с длинными командами, которые сложно повторять вручную.
Изучи Linux глубже - такая магия сильно экономит время
Если хочешь быстро повторить последнюю команду, но с небольшой правкой, не нужно заново её печатать.
Используй:
fc
Эта команда откроет последнюю введённую команду в твоём $EDITOR (обычно nano или vim).
Исправляешь, сохраняешь — и она автоматически выполняется.
Пример:
1. Ты написал команду с ошибкой
2. Вводишь
fc 3. Правишь одну букву
4. Сохраняешь
5. Команда запускается сразу с исправлением
Очень удобно, когда работаешь с длинными командами, которые сложно повторять вручную.
Изучи Linux глубже - такая магия сильно экономит время
❤21👍19🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
🔴 LINUX: НЕ ДЕЛАЙ ЭТУ ОШИБКУ!!!
Самая частая ошибка в Linux - запуск команд без понимания, под каким пользователем они реально выполняются. Многие уверены, что раз они используют sudo, то команда точно пойдёт с root-правами, но это не всегда так. Особенно когда дело касается переменных окружения, путей или редиректов — они могут выполняться от имени обычного пользователя и ломать логику скриптов. Всегда проверяйте, кто исполняет команду, прежде чем отлаживать «мистические» баги. Подписывайся, больше фишек каждый день !
Самая частая ошибка в Linux - запуск команд без понимания, под каким пользователем они реально выполняются. Многие уверены, что раз они используют sudo, то команда точно пойдёт с root-правами, но это не всегда так. Особенно когда дело касается переменных окружения, путей или редиректов — они могут выполняться от имени обычного пользователя и ломать логику скриптов. Всегда проверяйте, кто исполняет команду, прежде чем отлаживать «мистические» баги. Подписывайся, больше фишек каждый день !
# Проверяем контекст выполнения
whoami
sudo whoami
# Проблема с редиректом:
echo "data" > /root/test.txt # Ошибка: выполняется не от root
sudo echo "data" > /root/test.txt # Всё ещё ошибка
sudo sh -c 'echo "data" > /root/test.txt' # Правильно
# Проверка переменных окружения
echo $PATH
sudo echo $PATH
sudo -E env | grep PATH
👍27❤8🔥4🗿4