Страницы

Поиск по вопросам

Показаны сообщения с ярлыком centos. Показать все сообщения
Показаны сообщения с ярлыком centos. Показать все сообщения

четверг, 9 апреля 2020 г.

Удалить дубли в Linux по маске

#linux #регулярные_выражения #centos

                    
Составить команду для Linux CentOS

Нужно удалить дубли с практически одинаковыми названиями, содержащими цифры в конце.

Есть:

Авария на Чернобыльской АЭС.ppt
Авария на Чернобыльской АЭС 345.ppt
АА Лекция 13 Ю Защита в чс ДЛЯ ЗО.ppt
АА Лекция 13 Ю Защита в чс ДЛЯ.ppt
Обозначения в автоматике 194.ppt
Барклай де Толли.ppt


Оставить:

Авария на Чернобыльской АЭС.ppt
АА Лекция 13 Ю Защита в чс ДЛЯ.ppt
Обозначения в автоматике 194.ppt
Барклай де Толли.ppt


fdupes удалить дубли не помог.
    


Ответы

Ответ 1



Нашла на мой взгляд самое правильное решение ls | sort -f | uniq -dw 10 | while read d; do echo "$d"; done Команду после теста заменяем на rm и выставляем правильное количество знаков по которым ведется отбор. У меня стоит 10 но есть резон оптимизировать опытным путем

воскресенье, 29 марта 2020 г.

можно ли дозаписать в файл zip в конец файла не распаковывая его на диске на Linux?

#linux #bash #centos #zip #sh


Как дозаписать в файл упакованный в zip не распаковывая его на Linux из скрипта?
Может можно распаковать в оперативку и там дописать и запаковать заново? 
Есть идея монтировать раздел в оперативной памяти для этого, но кажется, что это
не лучший вариант
    


Ответы

Ответ 1



Обновить существующий архив новыми или измененными файлами, рекурсивно: zip -ur ARCH.zip FOLDER|FILE ...

воскресенье, 15 марта 2020 г.

JavaCV FFmpeg ClassNotFoundException

#java #centos #javacv


Есть приложение которое пишет видео с rtsp потока. Проект собираю с помощью gradle.
На локальной машине (там стоит kubuntu) все работает хорошо и верно. Как я отправляю
свой .war на сервер(там стоит CentOS), то получаю такую вот ошибку   


  java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil$AVFrame. 


И на локальной и на удаленной машине стоит Tomcat. Пробовал собирать проект на другой
машине с kubuntu и там тоже все работает без ошибок. В чем беда?

UDP: 
Ошибка  java.lang.NoClassDefFoundError



Так добавляю в gradle все зависимости.



И дерево с библиотеками 



Проверил какие библиотеки попадают в war. действительно класса org.bytedeco.javacpp.avutil
там нет.



Что я делаю не так? На двух машинах с kubuntu это работает.

UPDATE

Как я понял для CentOS надо самому собрать библиотеку. Делаю все по инструкции

Building JavaCV on CentOS 6.5

Но на шаге 9 получаю ошибку 


Build the opencv profile only, and install into local maven cache

mvn install --projects opencv




UPDATE 2

Связался с разработчиком библиотеки. Он говорит что эта старая инструкция создания
библиотеки и предложил новую.
Инструкция
Но получаю ошибку на шаге 


  $ wget https://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
  
  $ rpm --import https://linuxsoft.cern.ch/cern/slc6X/x86_64/RPM-GPG-KEY-cern



    


Ответы

Ответ 1



java.lang.ClassNotFoundException всегда значит одно и то же: виртуальная машина не смогла найти класс, вызываемый по строковому представлению его полного имени. В данном случае Java не может найти в CLASSPATH класс org.bytedeco.javacpp.avutil$AVFrame. Убедитесь, что соответствующая библиотека (вероятно это JavaCPP Presets, от которой зависит JavaCV) попала в сборку.

Ответ 2



вроде для работы с javacv надо: 1) добавлять библиотеку OpenCV в ОС 2) добавить зависимость на JavaCV в мавен. JavaCV работает как обёртка для основной библиотеки OpenCV

пятница, 14 февраля 2020 г.

После перезагрузки сервера Tomcat приложения не запускаются до передеплоя

#tomcat #centos #развертывание


На севере CentOS установлен сервер приложений Tomcat. В нем развернут проект в корневой
папке webapps/ROOT как описано здесь: Tomcat 9 deploy into ROOT

После физической перезагрузки сервера поднимается служба Tomcat, но приложение в
корневой папке webapps/ROOT остается недоступно.

Если заново скопировать {name-of-the-app}.war в папку myapps, то Tomcat заново разворачивает
архив, и приложение становится доступно.



На сколько я понимаю, приложения должны подниматься вместе с Tomcat-ом, но почему-то
этого не происходит.

Что я делаю не так?



UPD: - Логи сервера приложений

catalina.out - после перезапуска сервера

13-Sep-2018 22:09:11.152 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Server version:        Apache Tomcat/9.0.12
13-Sep-2018 22:09:11.155 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Server built:          Sep 4 2018 22:13:41 UTC
13-Sep-2018 22:09:11.155 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Server number:         9.0.12.0
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
OS Name:               Linux
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
OS Version:            3.10.0-862.11.6.el7.x86_64
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Architecture:          amd64
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Java Home:             /usr/java/jdk1.8.0_181-amd64/jre
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
JVM Version:           1.8.0_181-b13
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
JVM Vendor:            Oracle Corporation
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_BASE:         /opt/apache-tomcat-9.0.12
13-Sep-2018 22:09:11.156 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_HOME:         /opt/apache-tomcat-9.0.12
13-Sep-2018 22:09:11.157 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djava.library.path=/usr/local/apr/lib
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
13-Sep-2018 22:09:11.159 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Dignore.endorsed.dirs=
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Dcatalina.base=/opt/tomcat
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Dcatalina.home=/opt/tomcat
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log
Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent
Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.4.8].
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent
APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
13-Sep-2018 22:09:11.160 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent
APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
13-Sep-2018 22:09:11.166 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL
OpenSSL successfully initialized [OpenSSL 1.0.2k-fips  26 Jan 2017]
13-Sep-2018 22:09:11.338 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing
ProtocolHandler ["http-nio-8080"]
13-Sep-2018 22:09:11.355 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector
Using a shared selector for servlet write/read
13-Sep-2018 22:09:11.367 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol
The ["https-openssl-apr-8443"] connector has been configured to support negotiation
to [h2] via ALPN
13-Sep-2018 22:09:11.367 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing
ProtocolHandler ["https-openssl-apr-8443"]
13-Sep-2018 22:09:11.428 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing
ProtocolHandler ["ajp-nio-8009"]
13-Sep-2018 22:09:11.429 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector
Using a shared selector for servlet write/read
13-Sep-2018 22:09:11.430 INFO [main] org.apache.catalina.startup.Catalina.load Initialization
processed in 902 ms
13-Sep-2018 22:09:11.476 INFO [main] org.apache.catalina.core.StandardService.startInternal
Starting service [Catalina]
13-Sep-2018 22:09:11.477 INFO [main] org.apache.catalina.core.StandardEngine.startInternal
Starting Servlet Engine: Apache Tomcat/9.0.12
13-Sep-2018 22:09:11.489 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor
Deploying deployment descriptor [/opt/apache-tomcat-9.0.12/conf/Catalina/localhost/ROOT.xml]
13-Sep-2018 22:09:11.517 WARNING [main] org.apache.catalina.startup.HostConfig.deployDescriptor
The path attribute with value [] in deployment descriptor [/opt/apache-tomcat-9.0.12/conf/Catalina/localhost/ROOT.xml]
has been ignored
13-Sep-2018 22:09:11.527 WARNING [main] org.apache.catalina.startup.HostConfig.deployDescriptor
Deployment of deployment descriptor [/opt/apache-tomcat-9.0.12/conf/Catalina/localhost/ROOT.xml]
with an external docBase means the directory [/opt/apache-tomcat-9.0.12/webapps/ROOT]
in the appBase will be ignored
13-Sep-2018 22:09:12.431 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars
At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for
this logger for a complete list of JARs that were scanned but no TLDs were found in
them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation
time.


catalina.out - после передеплоя

13-Sep-2018 22:12:42.714 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom
Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [210,235]
milliseconds.
13-Sep-2018 22:12:42.786 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor
Deployment of deployment descriptor [/opt/apache-tomcat-9.0.12/conf/Catalina/localhost/ROOT.xml]
has finished in [211,297] ms
13-Sep-2018 22:12:42.792 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["http-nio-8080"]
13-Sep-2018 22:12:42.804 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["https-openssl-apr-8443"]
13-Sep-2018 22:12:42.815 INFO [main] org.apache.coyote.AbstractProtocol.start Starting
ProtocolHandler ["ajp-nio-8009"]
13-Sep-2018 22:12:42.825 INFO [main] org.apache.catalina.startup.Catalina.start Server
startup in 211395 ms
13-Sep-2018 22:12:52.791 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
org.apache.catalina.startup.HostConfig.reload Reloading context []
13-Sep-2018 22:12:52.794 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started
13-Sep-2018 22:12:53.966 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs
yet contained no TLDs. Enable debug logging for this logger for a complete list of
JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during
scanning can improve startup time and JSP compilation time.
13-Sep-2018 22:12:53.994 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
org.apache.catalina.core.StandardContext.reload Reloading Context with name [] is completed

    


Ответы

Ответ 1



Как выяснилось, Tomcat на самом деле запускался и поднимал приложение, но делал это очень медленно, а передеплой просто ускорял этот процесс. В некоторых случаях загрузка Tomcat вместе со всеми приложениями может длиться ~17 МИНУТ Проблема связана с ошибкой JDK-4705093 при генерации SecureRandom для SHA1PRNG. // Неочевидно, правда.. !! Но такое тоже бывает.. Решение: Открываем файл $JAVA_PATH/jre/lib/security/java.security Находим строку securerandom.source=file:/dev/random Заменяем ее на строку securerandom.source=file:/dev/./urandom Дополнительно: Более подробное описание ошибки можно найти здесь: Tomcat 7 starts too late on Ubuntu 14.04 x64 | stackoverflow.com

четверг, 13 февраля 2020 г.

Как на сервере запускать tcpdump без sudo?

#linux #bash #centos #sudo #wireshark


Нужно написать script, в котором будет использована tcpdump команда, но проблема
в том, что без sudo выдаёт "Permission denied" или что-то в этом роде, а если использовать
sudo, то нужен пароль, тогда script перестанет отвечать после команды tcpdump. Сервер
CentOS.
Как на сервере запускать tcpdump без sudo?
    


Ответы

Ответ 1



Нужно добавить запись файл /etc/sudoers c директивой NOPASSWD и путем к скрипту myusername ALL = (root) NOPASSWD: /path/to/script

Ответ 2



http://help.ubuntu.ru/wiki/суперпользователь_в_ubuntu информация о том, как выполнять команды не используя sudo.

среда, 29 января 2020 г.

Как понять нагрузку на сервер?

#linux #сервер #centos #веб_сервер #статистика


может кто-то объяснить как понять вот эти цифры?

то что они показывают нагрузку на 1 минуту, 5 минут и 15 минут - знаю

а что означает например 0.67?

у нас 2 процессора по 12 ядер каждый

до какого значения должно быть максимум нагрузка чтобы чтобы сервер работал нормально?
    


Ответы

Ответ 1



Показатель Load Average показывает, сколько в среднем процессов в системе стояло в очереди на выполнение и выполнялось в каждом из трёх указанных промежутков времени. Здесь «стоит в очереди на выполнение» означает, что процесс не находится в состоянии "sleep" и не ожидает завершения операции ввода-вывода, но и не является выполняющимся в данный квант процеесорного времени. То есть ему не мешает стать выполняющимся ничего, кроме того факта, что процессор в данный момент занят выполнением другого процесса. Например, если на иначе ничем не занятой одноядерной системе запустить три процесса, занимающихся активными вычислениями чего-либо (то есть не задействующих ввод-вывод), то показатель LA будет находиться в районе чуть выше 3.00. Что́ есть «сервер работает нормально» обычно точно не известно, поэтому, как уже отметили в комментарии, надо проводить нагрузочное тестирование. Иногда и при достаточно низких показателях LA, но при сильной нагрузке на диск производительность сервера начинает проваливаться заметно раньше теоретического «LA / кол-во ядер > 1», но я обычно рассматриваю именно это значение (то есть когда LA больше, чем количество ядер/HT-потоков) как предельное, при достижении которого процессор сервера явно нуждается в апгрейде (или ПО — в оптимизации). Или, по-другому выражаясь, неизвестно, будете ли вы отмечать тормоза при LA < 24, но то, что при LA > 24 вы их точно будете отмечать — это к бабке не ходи.

Ответ 2



htop + F2 (Load +) Средние значения нагрузки в Linux — это «средние значения нагрузки системы», показывающие потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков. Это мера нагрузки, которая может превышать обрабатываемую системой в данный момент а что означает например 0.67? (нагрузку ,была на 15 мин назад ) Load Average — среднее значение загруженности системы за период времени (в дальнейшем LA). Три значения показывают усреднённую нагрузку за последние 1, 5 и 15 минут. LA является одним из самых спорных показателей. Можно найти множество противоречивых статей, какое значение считать нормальным. Обычно принимается, что значение 0 это простой ядра, а значение 1 это полная нагрузка ядра. Оценить показатель средней нагрузки можно только зная количество ядер в системе. Узнать сколько ядер доступно можно командой: dmidecode -t processor | grep "Core Enabled:" Core Enabled: 6 Core Enabled: 6 Видим, что на данной системе находится 12 физических ядер (6+6). Соответственно, нормальный показатель LA должен быть менее 12. Смотри atop

воскресенье, 26 января 2020 г.

Как ограничить mysql по поглощению дисковой памяти?

#drupal #innodb #centos #mysql


Приветствую всех, кого не видел! Сразу к делу. Перевожу крупный портал в Amazon с
довольно мощной машинки:
Intel® Xeon® CPU E5-2620 0 @ 2.00GHz 
24 ядра 
32GB RAM 
1TB HDD

Особых настроек mysql/php/apache там конечно не было (ресурсов много, зачем напрягать
мозги). Упакованный дамп mysql весил примерно 250m, сам хост - порядка 1.5g. mysql/php/apache
уже поставлены, хост прописан и работает, но mysql постоянно жрет дисковую память,
независимо от нагрузки на сервер.
Кеширование отключено: boost не стоит, встроенное кеширование отключено.
Сейчас постоянно приходится расширять HDD, как только на нем остаются 5-7GB. На данный
момент HDD на 100g. Дальше расширяться не хочется, да и клиентам нужен бюджетный вариант.
Один нюанс: на старом хостинге HDD был заполнен на 254g и я не уверен, что эта цифра
до последнего момента не росла. Т.е., если я выделю 300g, вроде бы решу проблему, но
у меня задача уложиться по возможности в 30g :)
Кто-нибудь сталкивался, что посоветуете? Хотелось бы решить еще вопрос, как этот
кеш почистить, ведь все начиналось с 10g.
Если важно, то расширяю HDD по этому сценарию: How to Increase the size of a Linux
LVM by expanding the virtual machine disk

Сейчас зашел на сервер, и df уже показывает 54% вместо 94%:
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       98G   50G   43G  54% /
tmpfs                  15G     0   15G   0% /dev/shm
/dev/xvda1            477M   68M  384M  15% /boot

при том, что сервер с последнего перезапуска ни кто не трогал. От du объемы не изменились.
После первого захода на портал по IP'у картина измнилась:
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       98G   17G   76G  19% /
tmpfs                  15G     0   15G   0% /dev/shm
/dev/xvda1            477M   68M  384M  15% /boot

Что за выкрутасы?

Да, после ребута у du/df цифры те же. (
 --


Можно посмотреть, что там в кроне.

Сейчас ситуация кардинально поменялась: в du выдает уже папки с хоста, объем диска
то растет до 70% то падает до 20%.
 --
Я это сязываю пока с нехваткой оперативы. В top'е наблюдаю один процесс httpd, который
сожрал махом 30g вирт. памяти (о как!). По всей видимости, он ее пытается свопить на
диск, вот он и растет. Сейчас оптимизирую httpd.conf. Но при чем тут mysqld пока не
понял (я ему прописал в my.cnf забирать максимум 6g, что он и делает в top'е)
 --
Выходит, на своп для 32gRAM все равно придется обеспечить HDD, размером 64g как минимум
+ следить за аппетитами apache?    


Ответы

Ответ 1



Используй find, для поиска файлов, которые изменились или были созданы за искомое время и сделай на основании этого вывод, кто жрёт место. Пример поиска изменённых файлов в течении последних 60 секунд: find /path -type f -mtime -60s Для поиска созданных, используй ключ ctime

среда, 22 января 2020 г.

Linux не могу использовать rar

#linux #centos #rar


Есть Centos машина где я установил rar. 

Возьмём обычную команду из документации:

rar u -sp1 /main/test.rar /main/test.txt


В папке пользователя main через которого я подключился к машине создался архив test.rar
с файлом test.lol 

Но если я повторю попытку и введу ту же команду вот что получится:

-bash-4.2$ rar u  -sp1 /main/test.rar /main/test.txt

RAR 5.61   Copyright (c) 1993-2018 Alexander Roshal   30 Sep 2018
Trial version             Type 'rar -?' for help

Evaluation copy. Please register.

Updating archive /main/test.rar

Cannot create __rar_30656.29028
Permission denied
Program aborted
-bash-4.2$


То есть грубо говоря я не могу проводить манипуляции уже с существующими архивами
и добавлять / переносить в него файлы а мне это нужно.

Папка /main имеет Owner Main с которого я выполняю команды, так-же я поставил права
777 на эту директорию, потом я подумал что может программа  не может создать временный
файл архива и сделал chown Main и права 777 ещё и для папки /tmp но это не помогает.

P.S. с root пользователя всё работает. 

Права каталога main:

drwxrwxrwx 2 main root 4096 Nov 28 12:30 /main


Место на VPS ещё 14 gb. 
    


Ответы

Ответ 1



Видимо ситуация настолько редкая что даже гуру SO не знают точно что делать. Мною найдено альтернативное решение которое хоть как-то работает: Вообщем если манипулировать архивами в папке текущего пользователя, а в моем случае это /home/main/ - то никаких ошибок не возникнет и всё работает. За этими пределами ситуация та-же. Поставив все права, 777, нужную umask - но всё равно с существующими архивами ничего сделать не удаётся - появляется ошибка доступа и единственное что можно это только создавать новые. Пускай хотя-бы так пока.

воскресенье, 12 января 2020 г.

Glassfish стартует но не показывает ничего ни на 8080, ни на 4848 портах

#java #centos #glassfish


В чем может быть проблема?

CentOS 64 битная.

asadmin домены поднимает
enable-secure-admin делал

[root@javavps ~]# sudo lsof -Pn -iTCP -sTCP:LISTEN | grep '8080\|4848'
java     1400   root  349u  IPv6 3818283652      0t0  TCP *:8080 (LISTEN)
java     1400   root  358u  IPv6 3818284369      0t0  TCP *:4848 (LISTEN)


Вот еще что выдал 

COMMAND   PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
sendmail  377   root    4u  IPv4 3813528452      0t0  TCP 127.0.0.1:25 (LISTEN)
sshd      840   root    3u  IPv4 3816127270      0t0  TCP *:22 (LISTEN)
sshd      840   root    4u  IPv6 3816127277      0t0  TCP *:22 (LISTEN)
httpd    1030   root    3w  IPv4 3816157910      0t0  TCP *:80 (LISTEN)
httpd    1031 apache    3u  IPv4 3816157910      0t0  TCP *:80 (LISTEN)
java     1400   root  349u  IPv6 3818283652      0t0  TCP *:8080 (LISTEN)
java     1400   root  354u  IPv6 3818284000      0t0  TCP *:8181 (LISTEN)
java     1400   root  358u  IPv6 3818284369      0t0  TCP *:4848 (LISTEN)
java     1400   root  363u  IPv6 3818285427      0t0  TCP *:3700 (LISTEN)
java     1400   root  370u  IPv6 3818291333      0t0  TCP *:8686 (LISTEN)
java     1400   root  371u  IPv6 3818289128      0t0  TCP *:7676 (LISTEN)

    


Ответы

Ответ 1



Значит так... Проблема была в том, что необходимо было открыть порты в iptables # iptables -I INPUT -p tcp --dport 4848 -m state --state NEW -j ACCEPT # iptables -I INPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT Разрешили порты # service iptables save Сохранили # service iptables restart Перезапустили. Теперь по адресу сервера, по порту 4848 открывается админка.

Медленная передача файлов с linux-сервера

#linux #windows #centos #ssh #ftp


Сервер с centos 6.4.
Если отправляю файлы с сервера на внешнее хранилище (windows-машина с FTP и SSH сервисами),
при помощи lftp или scp -r то передача идет на скорости около 500 КБ/сек.

Если подключаюсь к windows-машине и с неё при помощи WinSCP по scp забираю файлы
с сервера - то скорость взлетает до 40 мегабит.

10 файлов, от 100МБ до 8ГБ. Суммарный объем около 12ГБ.
Канал около 50 мегабит.

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

Скрин производительности:



Обновление

Сравнил загрузку процессора на обоих машинах при передаче обоими способами, разница
незначительная - в пределах 10 % (Что, на мой взгляд, можно отнести к погрешности).

Если на windows машину лить файлы не с сервера, а еще откуда нибудь тоже медленно.
Хотя "windows - машинка" достаточно мощная и шустрая. Нагрузки на процессор почти нет,
памяти свободной около 70% (Общий объем 8ГБ).

Почему может возникать такая разница в скорости передачи данных в зависимости от
инициатора?

При передаче с сервера на другую машину в сети - со скоростью всё хорошо:  



А при отправке с другой машины на windows- очень медленная передача.

Обновление 2

Я пробовал передавать при помощи lftp, подключаясь к опубликованному на той же машине
(IIS) ftp-серверу. Ситуация примерно такая же. Может сможете посоветовать хороший ssh/scp
сервер для windows? Сейчас используется Bitvise SSH server.
    


Ответы

Ответ 1



Ответа на вопрос "Почему так" не нашёл. Сделал костыль, который позволил обойти проблему. На windows установил ssh сервер. С Linux отправляю на windows по ssh команду забрать файлы с Linux по scp при помощи WinSCP cli. Жуткая конструкция, но работает.

пятница, 27 декабря 2019 г.

Не запускается MySql с ошибкой UNKNOWN_MYSQL_USER@localhost

#mysql #linux #centos


Традиционное ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/lib/mysqld/mysqld.sock' (2)

Место на диске есть. Сервис mysqld запускается. 

В логах UNKNOWN_MYSQL_USER@localhost as on SET NAMES Quit

Что это?

Как можно увидеть, что вызывает с таким UNKNOWN_MYSQL_USER? И как его можно поменять?

Да. И много куда заглядывал. Изначально у меня не запускался вообще mysqld сервер,
и таблицы чинил, и права на папки ставил и процессы убивал и прочее.

Обновление

Проблема не ушла, но я, собственно, и не знал, что делать. Единственное место, где
я вижу хоть что-то про UKNOWN_MYSQL_USER - это 

/etc/init.d/mysqld -start(){
[ -x $exec ] || exit 5
# check to see if it's already running
    RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --      user=UNKNOWN_MYSQL_USER
ping 2>&1`
     if [ $? = 0 ]; then
    # already running, do nothing
    action $"Starting $prog: " /bin/true
    ret=0
       elif echo "$RESPONSE" | grep -q "Access denied for user"

    


Ответы

Ответ 1



Попробуй так : mysql -h 127.0.0.1 -P 3306 -u root -p Также (убедиться что он работает): telnet 127.0.0.1 3306 Если нету файла mysqld.sock Можно выполнить следующие команды (создаем файл и даем права на папку) # sudo mkfifo /var/run/mysqld/mysqld.sock # sudo chown -R mysql /var/run/mysqld Если при попытке старта он уже пишет ошибку 111 # mysql start ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) То mysql start - не совсем попытка старта.. /etc/init.d/mysql [re]start И да.. если сервер работает, адрес socket-а можно посмотреть в .cnf файле в каталоге /etc/mysql/ Вероятно, это просто расконфигурация в файле my.cnf, в /etc/somewhere (Зависимости от дистрибутива Linux). Тут обсуждается данная проблема

четверг, 26 декабря 2019 г.

ppp и его маршруты

#linux #сеть #centos #ppp #ipsec


Настроил libreswan (ipsec) + xl2tp в качестве клиента до одного провайдера. Поднимается
ikev1 шифрованый канал, через него поднимается ppp тунель и дальше мне приходится прописывать
роут через тунельную сеть, что я делаю скриптом

    function route_add () {
        ip r a 192.168.10.88 via 172.16.0.1 dev ppp0
    }

    ip r | grep -q "192.168.10.88"
    if [ $? -ne 0 ]
    then
        route_add
        sleep 5
    fi

    /bin/ping -q -c 3 192.168.10.88 >/dev/null 2>&1
    if [ $? -ne 0 ]
    then
        echo "d provider" > /var/run/xl2tpd/l2tp-control
        sleep 1
        service xl2tpd restart

        sleep 5
        route_add
    fi


Этот скрипт запускается по крону и "чинит" тунель в случае его падения, а такое,
к сожалению, иногда случается. 

А что делать, если тунелей у меня там будет 100500? Как роуты прокидывать в этом
случае? Я не могу гарантировать что одному тунелю будет присвоен всегда ppp0, второму
ppp1 и т.д. Может есть способ как-то xl2tp заставить роуты прописывать? Но тогда всё
равно вопрос с watchdog'ом остаётся актуален.
    


Ответы

Ответ 1



Способ 1 создайте файл : /etc/ppp/ip-up.d/0010routes #!/bin/sh echo $@ > /tmp/last-ppp-ip-up-args env > /tmp/last-ppp-ip-up-env if [ "$PEERNAME" -eq "username" ] ; then ; ip r d 192.168.0.0/24 metric ${metric} ip r a 192.168.0.0/24 metric ${metric} via $5 dev $1 fi $PEERNAME - логин ppp $5 - ip пира $1 - имя девайса Способ 2 Установи bird apt install bird в файл /etc/bird/bird.conf добавить protocol static { route 192.168.129.0/24 via 192.168.94.36; } При появлении маршрута до 192.168.94.36 bird добавит маршрут сразу.

Как узнать почему меняется таблица маршрутизации Linux

#linux #centos #маршрутизация


Подключил к серверу (centos7) Yota через USB как резервный канал связи. В первые
секунды всё ок, маршрут определяется правильно. Через несколько секунд маршрут по умолчанию
из таблицы маршрутизации пропадает.

При задании маршрута статически в конфиге и/или вручную через ip route ситуация повторяется. 
Адреса/маршруты на остальных картах прописаны статически.

Как узнать почему меняется таблица маршрутизации?
    


Ответы

Ответ 1



команда ip monitor по ней в реальном времени выводятся все изменения с IP-адресами, маршрутизацией и т.п. В данном конкретном случае я увидел, что маршрут по-умолчанию удаляется каждый раз при попытке создать ppp-соединение (основной способ подключения к интернет) и потом восстанавливается снова.

Ответ 2



Если запретить менять таблицу маршрутизации для всех процессов через SELinux, то виновник будет виден в audit.log

среда, 25 декабря 2019 г.

Функция fsockopen перестала работать с ssl

#php #centos #ssl #openssl


На vps (CentOS 7) перестала работать функция fsockopen с протоколом ssl:

fsockopen('ssl://smtp.yandex.ru', 465, $errnum, $errstr, 5);


Результат возвращает false, $errnum = 0, $errstr = ''. С другими протоколами проблем
нет. Месяц назад работало, за месяц много что настраивал на vps, теперь не могу определить
проблему. В лог ошибок попадает следующее:

FastCGI sent in stderr: "PHP message: PHP Warning:  fsockopen():
SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
in /site/fsockopen.php on line 3
PHP message: PHP Warning:  fsockopen(): Failed to enable crypto in /site/fsockopen.php
on line 3
PHP message: PHP Warning:  fsockopen(): unable to connect to ssl://smtp.yandex.ru:465
(Unknown error) in /site/fsockopen.php on line 3"

    


Ответы

Ответ 1



Всем спасибо, кто помогал, проблему решил следующим образом: Скачал сертификат от сюда: http://curl.haxx.se/ca/cacert.pem и положил его в каталог /etc/ssl/certs/ В php.ini прописал: openssl.cafile=/etc/ssl/certs/cacert.pem Выставил стандартные права на каталог /etc/pki/, так как в данной системе /pki/tls/certs/ смонтировано на /etc/ssl/certs/ (не хватало прав чтобы прочитать сертификат, это видимо одна из основных проблем которую я не замечал, по ошибке неправильные права выставил на /etc/pki/ когда что то делал на сервере)

суббота, 14 декабря 2019 г.

Как узнать какой скрипт/программа создает определенную папку на сервере?

#linux #nginx #centos #безопасность


В корне сайта периодически появляется папка temp с непонятными файлами. Я думаю что
это какой-то шелл создает его чтобы заполнить память диска. Я его удаляю, а на следующий
день он заново создается и в нем снова непонятные файлы. 

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

Например файл example.com/temp/u/d3d3LmZsYXRvdXIuY29tL215YWR2cy9ydS8%3D.tx‌​t содержит
лишь строку

dHJlYXN1cmV0b3duLzQ1NDg3NDUyOTQzMjMv


И эта папка состоит только из таких файлов.
Сервер у меня Centos6, VPS, панель ISPmanager, включен nginx, memcached, clamav.
    


Ответы

Ответ 1



Можно попробовать запустить команду lsof, которая отображает какая программа в данный момент открыла файл. Работает так: $ lsof /path/to/file Можно запустить с периодом в 1 секунду: $ lsof -r1 /path/to/file Ну и логгировать это всё в файл. Если держать при этом открытой ssh сессию не хочется, то можно использовать какой-нибудь gnu screen или подобную программу. Если программа отрабатывает слишком быстро и по этим логам её поймать не получится, то можно сделать ну совсем костыльно запускать как можно чаще $ while true; do lsof /paht/to/file; done;

Ответ 2



Вам может помочь пакет auditd. Пример: # auditctl -w /temp # mkdir /temp # mkdir /temp/u # ausearch -f /temp ---- time->Mon Aug 29 16:32:43 2016 type=CONFIG_CHANGE msg=audit(1472473963.517:46): auid=4294967295 ses=4294967295 op="updated_rules" path="/temp" key=(null) list=4 res=1 ---- time->Mon Aug 29 16:32:43 2016 type=PROCTITLE msg=audit(1472473963.489:47): proctitle=6D6B646972002F74656D70 type=PATH msg=audit(1472473963.489:47): item=1 name="/temp" inode=10691 dev=08:03 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=CREATE type=PATH msg=audit(1472473963.489:47): item=0 name="/" inode=2 dev=08:03 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=CWD msg=audit(1472473963.489:47): cwd=2F686F6D652F73657267696F2F456CC59D75746F6A type=SYSCALL msg=audit(1472473963.489:47): arch=40000003 syscall=39 success=yes exit=0 a0=bf82f7a3 a1=1ff a2=bf82f7a3 a3=bf82ee64 items=2 ppid=22390 pid=24813 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts8 ses=4294967295 comm="mkdir" exe="/bin/mkdir" key=(null) ---- time->Mon Aug 29 16:34:21 2016 type=PROCTITLE msg=audit(1472474061.417:71): proctitle=6D6B646972002F74656D702F75 type=PATH msg=audit(1472474061.417:71): item=1 name="/temp/u" inode=10693 dev=08:03 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=CREATE type=PATH msg=audit(1472474061.417:71): item=0 name="/temp/" inode=10691 dev=08:03 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=CWD msg=audit(1472474061.417:71): cwd=2F686F6D652F73657267696F2F456CC59D75746F6A type=SYSCALL msg=audit(1472474061.417:71): arch=40000003 syscall=39 success=yes exit=0 a0=bfe2c7a1 a1=1ff a2=bfe2c7a1 a3=bfe2a9a4 items=2 ppid=22390 pid=24846 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts8 ses=4294967295 comm="mkdir" exe="/bin/mkdir" key=(null)

пятница, 29 ноября 2019 г.

Автозагрузка программы при старте сервера

#java #linux #centos #автозапуск


в рамках изучения java (первый яп) написал простой эхо сервер с клиентом.

Друг дал доступ к серверу под управлением centos6 (первое знакомство с nix(?) системой).

После установки jre8 - смог запустить .jar на исполнение.

Как добавить файл в автозагрузку при старте системы?
    


Ответы

Ответ 1



если вам требуется, чтобы в конце загрузки операционной системы gnu/linux была выполнена какая-нибудь команда, то наиболее простой способ этого добиться — добавить данную команду в конце файла /etc/rc.local. но будьте внимательны: в некоторых дистрибутивах последней строкой в этом файле идёт строка exit 0 в этом случае вашу команду следует добавлять выше этой самой строки. команда будет выполнена от имени пользователя root. если же вам требуется, чтобы она была выполнена от имени какого-нибудь другого пользователя, можете воспользоваться такой, например, конструкцией: su -c "ваша команда" пользователь

Ответ 2



Создаем файл /etc/init.d/"filename". В нем пишем: #!/bin/sh #chkconfig: 345 99 01 #description: some code to load on boot case "$1" in start) cd /root/myjavaserver/ /usr/bin/java -jar java.jar & ;; stop) killall -v java ;; esac exit 0 Делаем файл исполняемым: chmod +x "filename". Добавляем в службы chkconfig --add "filename". Всё должно заработать.

вторник, 16 июля 2019 г.

Автоматическое обновление параметров сети

Есть сервер, с ОС Centos 6.4. У провайдера иногда пропадает интернет, и сервер не обновляет параметры сети, не получает IP и т.д, и поэтому его приходится постоянно перезагружать. Может быть, есть какой-нибудь скрипт, который будет при появлении интернета, обновлять параметры? Так как не обновляется сеть при повторном появлении интернета.
Имеются 2 сетевые карты, объединённые в BOND-инг (3)
ifcfg-eth0
DEVICE=eth0 TYPE=Ethernet UUID=0aa4aba2-e45c-4d1d-ba90-ca93cbaf071a ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:15:17:44:FF:48 PEERDNS=yes PEERROUTES=yes USERCTL=no MASTER=bond0 SLAVE=yes
ifcfg-eth1
DEVICE=eth1 TYPE=Ethernet UUID=e427aa5a-7e1c-44c0-8a2e-d5d7856e7142 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" HWADDR=00:15:17:44:FF:49 PEERDNS=yes PEERROUTES=yes USERCTL=no MASTER=bond0 SLAVE=yes
ifcfg-bond0
DEVICE=bond0 ONBOOT=yes BOOTPROTO=dhcp USERCTL=no BONDING_MASTER="yes" BONDING_OPTS="miimon=100 mode=3 updelay=100 downdelay=100 use_carrier=1" TYPE=Bonding NOZEROCONF=yes


Ответ

судя по содержимому приведённого лога, проблема, скорее, не у вас, а у dhcp-сервера провайдера (или у сети провайдера): время аренды, вероятно, что-то около двадцати минут, и когда, спустя примерно половину этого времени ваш dhclient начинает посылать запросы на обновление аренды, ответ приходит спустя огромный промежуток времени — минимум три минуты.
вероятно, время от времени этот промежуток превышает примерно десять минут, время аренды истекает, ответа нет, и dhclient, в полном соответствии с rfc2131 обязан освободить используемый адрес.
помимо первого приходящего в голову совета сменить провайдера, можно попробовать ещё несколько путей (приведены в порядке уменьшения реалистичности):
прописать статическую конфигурацию сети запрашивать бо́льшее значение времени аренды адреса (send dhcp-lease-time секунды в /etc/dhcp/dhclient.conf) заменить время аренды адреса (supersede dhcp-lease-time секунды в /etc/dhcp/dhclient.conf)

среда, 10 июля 2019 г.

php-fpm лимит по IP

У меня сервер 10x3ghz рам 8гб Centos 6.5, nginx, php-fpm, mysql
есть некий скрипт который долго выполняется, примерно 1 минут. и когда я запускаю его, я не могу зайти на другие страницы сайта пока этот скрипт не выполнится. Я думал это nginx блокирует чтобы второго запроса не было пока первый не завершится. Но видел что страницы статические без проблем открываются. Наверное это лимит php-fpm. Но не могу как исправить. Я хочу чтобы разрешал 2 одновременных соединений
Скрипт запускаю через URL. Если в этот момент зайди на сайт с другого İP то все работает. В смысле ограничивается доступ только к ip который запускал скрипт.
[root@localhost ~]# grep ^pm.max_children /etc/php-fpm.d/www.conf pm.max_children = 500 [root@localhost ~]# ps axu | grep -c fpm 132


Ответ

Нашел в чем проблема. Это файл сессии блокируется.
Сессии, использующие файлы (по умолчанию в PHP), блокируют файл сессии сразу при открытии сессии функцией session_start() или косвенно при указании session.auto_start. После блокировки, ни один другой скрипт не может получить доступ к этому же файлу сессии, пока он не будет закрыт или при завершении скрипта или при вызове функции session_write_close(). Скорее всего это станет проблемой для сайтов, которые активно используют AJAX и делают несколько одновременных запросов. Простейшим путем решить эту проблему будет вызов функции session_write_close() сразу же как только все требуемые изменения в сессии будут сделаны, предпочтительно ближе к началу работы скрипта. Также можно использовать другой механизм сессии, который поддерживает конкурентный доступ.

суббота, 22 июня 2019 г.

Удалить дубли в Linux по маске

Составить команду для Linux CentOS
Нужно удалить дубли с практически одинаковыми названиями, содержащими цифры в конце.
Есть:
Авария на Чернобыльской АЭС.ppt Авария на Чернобыльской АЭС 345.ppt АА Лекция 13 Ю Защита в чс ДЛЯ ЗО.ppt АА Лекция 13 Ю Защита в чс ДЛЯ.ppt Обозначения в автоматике 194.ppt Барклай де Толли.ppt
Оставить:
Авария на Чернобыльской АЭС.ppt АА Лекция 13 Ю Защита в чс ДЛЯ.ppt Обозначения в автоматике 194.ppt Барклай де Толли.ppt
fdupes удалить дубли не помог.


Ответ

Нашла на мой взгляд самое правильное решение
ls | sort -f | uniq -dw 10 | while read d; do echo "$d"; done
Команду после теста заменяем на rm и выставляем правильное количество знаков по которым ведется отбор. У меня стоит 10 но есть резон оптимизировать опытным путем

пятница, 21 июня 2019 г.

Какие могут быть причины такого ступенчатого роста access-логов nginx?

Заметили очень странное изменение размера файла access-логов nginx. Ниже будет скриншот из Zabbix, по которому видно, что файл логов nginx растёт ступенчато (на графике показано свободное место в /var, но там только логи nginx, к тому же проверяли изменение размера логов и в консоли). Видно, что замер "ступенек" на графике равномерно и пропорционально возрастает.
Самое странное, что в районе 22:00 файл логов стал весить 8Гб, а потом сразу 4Гб, при этом мы никаких действий не осуществляли и никаких "особых демонов ротации логов" на хосте нет.
Несколько уточнений:
Трафик равномерный, никаких скачков в течение для не было. Ротация логов делается с помощью logrotate.d, который срабатывает один раз в сутки. Никаки бекап-скриптов, забирающий логи или как-то с ними взаимодействующий - нет. Конечно в /var/log есть еще файлы крона и tmp, но мы несколько раз в этот день проверяли размер всех файлов и это именно access.log растёт согласно графику. Логи в конфиге nginx настроены по дефолту:
access_log /var/log/nginx/access.log main;
Может есть какие-то особенности записи логов в nginx, о которых мы не догадались по доке?


Ответ

В общем ответ оказался для нас слегка неожиданным, и суть заключалась в специфике работы XFS. Оказалось, что на диске по мере роста файла преаллоцируется пространство, что и объясняет скачкообразный рост показателей в команде du, не коррелирующий с динамикой трафика. Ниже ссылки для интересующихся, а также скрин графика из Zabbix, на котором мы решили отдельно мониторить файл логов (выводы du и stat). И как мы видим - du растёт ступенчато, а stat по динамике соответствует трафику:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=055388a3188f56676c21e92962fc366ac8b5cb72 https://serverfault.com/questions/406069/why-are-my-xfs-filesystems-suddenly-consuming-more-space-and-full-of-sparse-file