Решения различных проблем, полезные команды.

Столк­нул­ся со сле­ду­ю­щей проблемой
при ска­чи­ва­нии фай­лов с сайта(ссылка и имя фай­ла ука­за­ны в кирил­ли­це) нуме­ру­ют­ся фай­лы в кон­це, численно:

Thank you for reading this post, don't forget to subscribe!

junior3 d.ru/ texture/Бетон/Бетон/бетон_1.jpg

ска­чи­вал через цикл:
for i in {1..90}; do wget http://junior3d.ru/texture/%D0%91%D0%B5%D1%82%D0%BE%D0%BD/%D0%A1%D1%82%D0%B0%D1%80%D1%8B%D0%B9%D0%91%D0%B5%D1%82%D0%BE%D0%BD/%D1%81%D1%82%D0%B0%D1%80%D0%B8%D0%B9-%D0%B1%D0%B5%D1%82%D0%BE%D0%BD_$i.jpg; done

 

фай­лы ска­ча­лись но с битой кодировкой:
г?%80?%8Fзна?%8F-?%88?%82?%83ка?%82?%83?%80ка_94.jpg

для того, что­бы при­ве­сти дан­ные фай­лы к нор­маль­но­му виду, сде­ла­ем следующее:

Отсор­ти­ру­ем назва­ние фай­лов по номе­рам и доба­вим в отдель­ный файл:
for i in {1..450}; do ls | grep "_$i.jpg$"; done > 5.txt (здесь пер­вый знак $ука­зы­ва­ет на пере­мен­ную, вто­рой это регу­ляр­ка, ука­зы­ва­ю­щая на конец)

 

далее созда­ём ещё один файл со сле­ду­ю­щим содержимым:

cat skript
#!/bin/bash
i=0
for file in `cat 5.txt`;
do ((i+=1))
mv ./${file} ./грязная_штукатурка.$i.jpg;
done

 

и запус­ка­ем его в нашей дирек­то­рии, куда были ска­ча­ны все файлы:
bash skript

 

более ком­пакт­но реше­ние будет выгля­деть сле­ду­ю­щим образом:
ска­чи­ва­ем все фай­лы в директорию(имя дирек­то­рии зада­ём таким, какое имя фай­лов нам нужно)
в моём слу­чае дирек­то­рия следующая:
pwd
/samba/грязная_штукатурка
в дан­ной дирек­то­рии созда­ём скрипт:
cat 1.sh
#!/bin/bash
imya=`pwd | awk -F '/' '{print $NF}'`
for i in {1..450}; do ls | grep "_$i.jpg$"; done > faili.txt
i=0
for file in `cat faili.txt`;
do ((i+=1))
mv ./${file} ./$imya.$i.jpg;
done
rm -rf faili.txt

 

здесь awk -F '/' '{print $NF}' ука­зы­ва­ет на послед­ний столбец

так же напом­ню, что печать всех столбцов:

$ awk '{print $0}' FILE

Что­бы вруч­ную не копи­ро­вать каж­дый скрипт и не запус­кать его выпол­ним сле­ду­ю­щие действия:

созда­дим спи­сок дирек­то­рий в кото­рые нуж­но про­из­ве­сти копи­ро­ва­ние и ско­пи­ру­ем скрипт в каж­дую директорию:

find . -type d > dirkart
for i in `cat dirkart`; do cp 1.sh $i; done

далее созда­дим скрипт, кото­рый будет запус­кать основ­ные скрипты:
cat 2.sh
#!/bin/bash
for k in `cat dirkart`; do
cd $k
/bin/bash 1.sh
cd ../../
done

________________________________________________________________________________________________________________

Зада­ча пере­име­но­вать все фай­лы в под­пап­ках с про­бе­ла­ми в названии:
пример:
./material/кирпич_окрашенный/Новый тек­сто­вый документ.txt
./material/капли_воды/Новый тек­сто­вый документ.txt

 

запус­ка­ем скрипт:
find . -name *.txt | while read full; do name=${full##*/}; mv -- "${full}" "${full%/*}/${name// /_}"; done;

 

резуль­тат:
./material/кирпич_окрашенный/Новый_текстовый_документ.txt
./material/капли_воды/Новый_текстовый_документ.txt

_______________________________________________________________________________________________________

Зада­ча пере­име­но­вать часть тек­ста внут­ри всех дан­ных файлов.
Созда­ём спи­сок файлов:
find . -name *.txt > spisok

 

далее про­из­во­дим замену:
for k in `cat spisok`; do sed -i "s|1.png|\$i.png|" $k; done
for k in `cat spisok`; do sed -i "s|1.jpg|\$i.jpg|" $k; done

 

резуль­тат:
cat ./металл_ковка/Новый_текстовый_документ.txt
http://junior3d.ru/texture/%D0%9C%D0%B5%D1%82%D0%B0%D0%BB%D0%BB/%D0%9A%D0%BE%D0%B2%D0%BA%D0%B0/%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0_$i.png

 

cat ./кожа_рептилий/Новый_текстовый_документ.txt
http://junior3d.ru/texture/%D0%9A%D0%BE%D0%B6%D0%B0/%D0%9A%D0%BE%D0%B6%D0%B0%D0%A0%D0%B5%D0%BF%D1%82%D0%B8%D0%BB%D0%B8%D0%B9/%D0%BA%D0%BE%D0%B6%D0%B0-%D1%80%D0%B5%D0%BF%D1%82%D0%B8%D0%BB%D0%B8%D0%B9_$i.jpg

 

созда­ём спи­сок директорий:
find . -type d > direktorii

 

про­из­ве­дём ещё одну замену
for k in `cat spisok`; do sed -i "s|_\$i.jpg||" $k; done

 

и запу­стим скрипт:

#!/bin/bash
for k in `cat direktorii`; do
cd $k
link=`cat Новый_текстовый_документ.txt`
echo $link
for i in {1..500}; do wget "$link"_$i.jpg; done
cd ../
done

-----------------------------------------------------------------------------

необ­хо­ди­мо пере­име­но­вать несколь­ко фай­лов из тако­го вида:
payment.2021-03-08.log.gz
payment.2021-03-09.log.gz

в такой
payment.2021-03-08.log.tar.gz
payment.2021-03-09.log.tar.gz

исполь­зу­ем команду:

find . -type f -name '*.log.gz' | while read FNAME; do mv -v "$FNAME" "${FNAME//log.gz/log.tar.gz}"; done

_______________________________________

если надо пере­име­но­вать фай­лы вот так:
‘./3.j_’ -> ‘./3.js’
‘./1.j_’ -> ‘./1.js’
‘./2.j_’ -> ‘./2.js

исполь­зу­ем команду:

find . -type f -name '*.j_' | while read f; do mv -v "$f" "${f%.*}.js"; done

_____________________________________________

най­ти наи­боль­шее коли­че­ство файлов(inode) в директориях:
find . -xdev -type f | cut -d "/" -f 2 |sort| uniq -c | sort -nr | head -n 15 (быст­рее работает)
или

for i in *; do echo -e "$(find $i | wc -l)\t$i"; done | sort -nr | head -n 15

______________________________________________

посмот­реть актив­ные tcp соединения
netstat -panto
udp соответственно:
netstat -panuo

_______________________________________________

раз­де­лить файл на несколь­ко (5кб  -b 5k) с ука­за­ни­ем име­ни (-d имя.)
split -b 5k dorks.list -d dorks.list.

_______________________________________________

поста­вить Unrar и Rar на CentOS

wget http://rarlabs.com/rar/rarlinux-3.9.3.tar.gz
tar xzf rarlinux-3.9.3.tar.gz
cd rar
make install

Коман­да make install выпол­нит сле­ду­ю­щие дей­ствия соглас­но содер­жи­мо­му фай­ла makefile:

________________________________________________

рас­па­ко­вать мно­же­ство архи­вов rar с ука­за­ни­ем назва­ния директории:

#!/bin/bash

imya=`pwd | awk -F '/' '{print $NF}'`
for i in {1..100}; do ls | grep "$i.rar$"; done > faili.txt
i=0
for file in `cat faili.txt`;
do ((i+=1))
unrar e ./${file} ./$imya.$i/;
done
rm -rf faili.txt
__________________________________________________

пере­име­но­вать фай­лы, убрав про­бе­лы в фай­лах вида:
image (10).jpg

image_(4).jpeg

find . -name '*.jpg' | while read full; do name=${full##*/}; mv -- "${full}" "${full%/*}/${name// /_}"; done;
find . -name '*.jpeg' | while read full; do name=${full##*/}; mv -- "${full}" "${full%/*}/${name// /_}"; done;

 

Пере­име­но­вать рас­ши­ре­ния с jpeg на jpg

for i in *.jpeg; do mv $i `basename $i .jpeg`.jpg; done

пере­име­но­вы­ва­ем фай­лы по выбран­но­му шаблону(file):
j=0

for i in *.jpg; do let j+=1 && mv $i file$j.jpg ; done

__________________________________________________

Ста­вил proftpd, он не стар­то­вал, оши­бок в логах не было, помог­ло следующее:

/usr/sbin/proftpd
- warning: unable to determine IP address of 'centos6'
- error: no valid servers configured
- Fatal: error processing configuration file '/etc/proftpd.conf'

 

доба­вил хостнейм:
[root@centos6 ~]# hostname
centos6

cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6

______________________________________________________

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

Недав­но, при выпол­не­нии пере­за­груз­ки веб-сер­ве­ра (у меня был уста­нов­лен имен­но nginx), воз­ник­ли ошибки:

[root@localhost ~]# service nginx restart
Stopping nginx: [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8083 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8082 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[FAILED]
 Реше­ние.

Если вы полу­ча­е­те сле­ду­ю­щее сооб­ще­ние об ошиб­ке, когда вы пыта­е­тесь запу­стить Nginx:

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

Тогда это озна­ча­ет, что Nginx или дру­гой про­цесс уже исполь­зу­ет порт 80 ну или любой другой.

Для нача­ла, посмот­рим кто занял порт:

# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
clock-app 2883 captain 21u IPv4 31126 0t0 TCP 192.168.103.236:37139->87.245.221.115:http (ESTABLISHED)
nginx 3646 root 9u IPv4 29444 0t0 TCP *:http (LISTEN)

Вы може­те «убить» его с помощью:

$ sudo fuser -k 80/tcp

А потом попро­буй­те пере­за­гру­зить Nginx снова:

# service nginx restart
 ______________________________________________________
mysqldump: Got error: 144: Table './u3605390_peaknew/star_29redirect_links' is marked as crashed and last (automatic?) repair failed when using LOCK TABLES
sudo service mysql stop
Go to your data folder. On Debian:cd /var/lib/mysql/$DATABASE_NAME
Try running:myisamchk -r $TABLE_NAME
If that doesn't work, you can try:myisamchk -r -v -f $TABLE_NAME
_______________________________________________________
Warning
: mysqli::mysqli() [
mysqli.mysqli
]: (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in
/var/www/user/data/www/domen
on line
2-bash-4.1# service mysqld status
mysqld dead but subsys locked-bash-4.1# ls -lah /var/lock/subsys/mysqld
-rw-r--r-- 1 root root 0 May 20 17:16 /var/lock/subsys/mysqld-bash-4.1# cp /var/lock/subsys/mysqld /root/mysqld
-bash-4.1# rm /var/lock/subsys/mysqld
-bash-4.1# /etc/init.d/mysqld stop
Stopping mysqld: [ OK ]
-bash-4.1# /etc/init.d/mysqld start
Starting mysqld: [ OK ]
-bash-4.1# /etc/init.d/mysqld status
mysqld (pid 13147) is running…
_______________________________________________________
ERROR 1709 (HY000) at line 25313: Index column size too large. The maximum column size is 767 bytes
без­дум­ное исполь­зо­ва­ние innodb[root@server]# sed -i 's/ENGINE=InnoDB/ENGINE=MyISAM/' DUMP.sql
после мож­но про­из­во­дить импорт.
_______________________________________________________Если при уда­ле­нии фай­ла, он остал­ся открыт или его дер­жит какой-то сто­рон­ний про­цесс, то уда­лить его мож­но сле­ду­ю­щим образом:
необ­хо­ди­ма ути­ли­та lsof (yum install lsof)
[root@rust1 tmp]# touch 66
[root@rust1 tmp]# tail -f 66 &
[2] 10949
[root@rust1 tmp]# touch 77
[root@rust1 tmp]# tail -f 77 &
[3] 10976удаляем откры­тый файл:
[root@rust1 tmp]# rm -rf 66

нахо­дим все удалённые:
[root@rust1 tmp]# lsof | grep delete
tail 10152 root 3r REG 253,4 1073741824 14 /tmp/55 (deleted)
tail 10949 root 3r REG 253,4 0 15 /tmp/66 (deleted)

завер­ша­ем их процесс:
[root@rust1 tmp]# kill -9 10152 10949
[root@rust1 tmp]# lsof | grep delete
[1] Killed tail -f 55
[2]- Killed tail -f 66