https://www.f-notes.info/linux:linux_command
gdialog --msgbox "It work\!" 25 20 > /dev/null # msgbox
ls -1 | xargs -I {} echo $(pwd)/{$1} # вывод файлов с путями
ls -1d $(pwd)/* # вывод файлов с путями # ls -ld $PWD/*
# дату и время нельзя ставить одновремено хз почему
date +%Y%m%d -s "20180226"
date +%H%M -s "1254"
# смена тайм зоны
mv /etc/localtime /etc/localtime_org && ln -s /usr/share/zoneinfo/"Europe/Moscow" /etc/localtime && date
df / # сколько свободного места осталось
du -had 1 | sort -h # размеры тек директорий
du --max-depth=1 $pwd | sort -nr
sed -n '30,+20p' filename # вывод определных строк в файлах
cat -n file.txt | grep -A 20 '^ *30' # аналогично верхнему но с номерами строк
echo export GREP_OPTIONS='--color=always' >> ~/.bashrc # цвет для grep
# Перекодировать все файлы сайта в UTF-8
find . -name '*.php' -type f -exec iconv -fcp1251 -tutf8 -o /tmp/tmp_file {} \; -exec mv /tmp/tmp_file {} \;
# add to bin folder
sudo ln -s 'bin/sonar-scanner' /bin
# вывод процессов
ps aux |head -n1 && ps aux |egrep 'arti|node|redis|mysql'
# цикл
for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done
# env variable
export PATH=${PATH}:/home/vivek/bin
# замена текста
find * -type f | xargs -I {} sed -i -- 's/sprint.migration/sprint.clean/g' '{}'
# копировать файл с удаленой машины
scp root@185.76.147.199:/root/logs/ne.log new.log
rsync -av --progres ./ root@app.websrwx.net:/tmp/
rsync -azP -e 'ssh -A -p 22 -i key' 'public/build' 'ubuntu@site.ru:/releases/5/public'
mkdir -p {main,test}/{resources,scala/com/company}
Работа с сетью
netstat -tupln # -pant просмотр портов на локальной машине
# аналог
ss -npt
# Итого обычно нужны ss -tp и ss -tl
sudo apt-get -y install imagemagick
# The command mogrify overwrites the original files with the resized images:
mogrify -resize 50% *.png # keep image aspect ratio
mogrify -resize 320x240 *.png # keep image aspect ratio
mogrify -resize 320x240! *.png # don't keep image aspect ratio
mogrify -resize x240 *.png # don't keep image aspect ratio
mogrify -resize 320x *.png # don't keep image aspect ratio
# CPU info
ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'
lscpu
# Подробная информация по оборудованию
sudo lshw -short
sudo lshw -html | w3m -T text/html
# usb devises
lsusb
# Список оборудования
lspci
# Это значит, что доступны 28000 портов
cat /proc/sys/net/ipv4/ip_local_port_range
# mcedit /etc/sysctl.conf
fs.file-max = 10000000
fs.nr_open = 10000000
net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.ip_local_port_range = 1000 65535
# mcedit /etc/security/limits.conf
* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000
# After this reboot your system.
# Flush the DNS Cache on Linux
sudo systemd-resolve --flush-cache
sudo systemd-resolve --statistics
# запуск команды с логами
su apache -s /usr/bin/bash /opt/start.sh
Найти текст в файлах
# поиск текста в директории с выводом номеров строк
grep -Rn 'date' ./
grep -rl 'text' /path
# считает количество файлов *.xsd
find . -name *.xsd | wc -l
Информация об оперативное памяти
Авто выключение машины через 30 мин
Изменить правило всем папкам и под-папкам с текущей директории
find ./ -type d -exec chmod 755 {} \;
ldd /bin/chmod # Посмотреть какие библиотеки использует приложение
sg group "command" # Запуск команды от имени другой группы
lsof -p <pid> # Посмотреть открытые файлы процессом
# количество открытых TCP соединений на машине
lsof -iTCP | wc -l
# убить процесс по порту
lsof -ti tcp:5900 | xargs kill
Список запущенных процессов и их команда запуска
# Take a look at cat /proc/stat
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
# NOTE: this is not the current CPU usage, but the overall CPU usage in all the cores since the system bootup. This could be very different from the current CPU usage. To get the current value top (or similar tool) must be used.
# Current CPU usage can be potentially calculated with:
awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' \
<(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)
free_mem () {
prec=$1;
read -r _ freemem _ <<< "$(grep --fixed-strings 'MemFree' /proc/meminfo)"
bc <<< "scale=${prec:-3};${freemem}/1024"
}
free_mem 6
Измерение полосы пропускания сети и нагрузки на CPU
#!/bin/bash
date
interval=1
interface=eno1
rxstart=`ifconfig $interface | grep "RX.*bytes" | awk '{print $5}'`
txstart=`ifconfig $interface | grep "TX.*bytes" | awk '{print $5}'`
sleep $interval
rxend=`ifconfig $interface | grep "RX.*bytes" | awk '{print $5}'`
txend=`ifconfig $interface | grep "TX.*bytes" | awk '{print $5}'`
differencerx=$(($rxend - $rxstart))
differencetx=$(($txend - $txstart))
cpu=`awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' \
<(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)`
echo "Received `expr $differencerx / $interval` bytes per sec"
echo "Sended `expr $differencetx / $interval` bytes per sec"
echo "Cpu load $cpu"
Foreach по find
#!/bin/bash
# все файлы младше 22 секунд и старше одной секунды
files=$(find /var/www/-name '*.txt' -newermt '-22 seconds' -not -newermt '-1 seconds' -print)
y=${files%$'\n'*}
# по каждому файлов проходим в цикле
for line in $y; do
file_dst=$(echo $line | sed -E "s/-.*txt/\.log/");
echo "file src $line"; echo "file dst $file_dst"; echo
ffmpeg -hide_banner -loglevel error -y -i $line -c copy $file_dst;
done;
опытные пользователи запрашивают вывод ядра.
dmesg --level=err,warn -T
# размер файлов в байтах
stat --printf="%s" file.any
TOP
for i in {1..10};do date; top -b -o +%MEM | head -n 17|tail -11;sleep 5;done
for i in {1..10};do date; top -b -o +VIRT | head -n 17|tail -11;sleep 5;done
for i in {1..10};do date; top -b -o +RES | head -n 17|tail -11;sleep 5;done