Linux: Cron i crontab

2021-04-23

Kilka uwag z dzisiejszej zabawy z crontabem

listowanie zdefiniowanych zadań

crontab -l

edycja listy zaań

crontab -e

Konfiguracja logowania zdarzeń związanych z cron-em (odkomentowanie linijki):

/etc/rsyslog.conf

cron.*                          /var/log/cron.log

definiowanie joba jako do uruchomienia co 15 minut o 6 i 18 lub po restarcie:

*/15 * * * * /usr/bin/python3 /home/cam/proc_cam14.py
0 6,18 * * * /usr/bin/python3 /home/cam/send_report.py
@reboot /home/cam/prepare_ram.sh

przekierowanie standardowego wyjścia programu do /dev/null i przekierowanie wyjścia błędów do pliku:

command   >/dev/null 2>/tmp/log.txt

By Rafał Kraik in Linuxy

Postgres: Problem running post-install step. Installation may not complete correctly Error reading file C:/Program Files/PostgreSQL/13/data/postgresql.conf”

2021-04-23

Zdarza się, że coś pójdzie nie tak. Dobrze jeśli masz przy tym możliwość przejrzenia logów aplikacji, ale jeśli masz coś poradzić zdalnie nie widząc systemu…. To kilka pomysłów, co można zdziałać:

  • instalatora uruchamiać jako administrator
  • przed isnatalacją porządny restart (z przytrzymaniem klawisza shift)
  • wyłączenie antywirusa, restrykcyjnego firewalla
  • wykonanie instalacji w sieci domowej (nie korporacyjnej)
  • hasło użytkownika postgres (ostrożnie ze znakami specjalnymi)
  • instalacja w domyślnym katalogu, a jeśli problem wystąpił w domyślnym, to zmiana na inny ale o prostej nazwie (brak spacji, polskich liter etc)
  • tworzenie nowego użytkownika pod windows i instalowanie z tego konta
  • Instalacja wersji o 1 wcześniejszej
  • Usunąć pliki z C:\Users\%USERNAME%\AppData\Roaming\pgAdmin\sessions
  •  

    Wyczyścić zawartość katalogu C:\Users\%USERNAME%\AppData\Roaming\pgAdmin

  •  

    Uruchomić pgadmin „jako administrator”

  •  

    Dodać katalog bin Postgresa (np C:\PostgreSQL\10\bin) do zmiennej PATH\

 

Przejrzyj też

https://stackoverflow.com/questions/16730405/postgres-installation-error-reading-file-postgresql-conf

‘Problem running the post-install step’ during PostgreSQL installation

https://dba.stackexchange.com/questions/246775/postgresql-11-5-installation-problem

https://postgresrocks.enterprisedb.com/t5/PostgreSQL/Postgresql-11-failing-to-Install-on-Windows/td-p/2588/

configuration – pgadmin4 : postgresql application server could not be contacted. – Stack Overflow

By Rafał Kraik in PostgreSQL

Błąd podczas instalacji PostgreSQL: Problem ze zmienną COMSPEC

2021-04-17

Taki oto błąd może się pojawić podczas intalacji PostgreSQL na Windows:

The environment variable COMSPEC does not seem to point to the cmd.exe or there is a trailing semicolon present

COMSPEC to zmienna środowiskowa wskazująca na interpreter poleceń w systemie windows. Interpreter poleceń, to po prostu program cmd.exe. Może się zdarzyć, że wskutek jakieś innej nieudanej operacji, względnie infekcji wirusem, ta zminna może być niepoprawnie ustawiona. W takim przypadku trzeba zmodyfikować tą zmienną.

Kliknij na start >> odszukaj „Mój komputer” >> kliknij ikonkę prawym przyciskiem myszy i wybierz właściwości >> w oknie wybieraj kolejne pozycje dochodząc w końcu do poszukiwanego COMSPEC:

Po modyfikacji zrestartuj komputer

By Rafał Kraik in Helpdesk

SQL: AlwaysOn: Cloud witness: The client and server cannot communicate

2021-03-28

Podczas dodawania do quorum  świadka „Cloud Witness” dostałem błąd:

An error was encountered while modifying the quorum settings.
Your cluster quorum settings have not been changed.
The client and server cannot communicate, because they do not possess a common algorithm.

Dodajmy, że Always On był konfigurowany na Windows 2016.

Przyczyną jest to, że Azure Storage Account pozwala na połąćzenie za pomocą TLS 1.0 1.1 i 1.2, tymczasem na moich serwerach miałem wyższą wersję. Nie wiem, jak obniżyć wykorzystywaną wersję w interfejsie graficznym, ale z powershella robi się to tak:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Set-ClusterQuorum -Cluster Cluster_Name -CloudWitness -AccountName Storage_Account_Name -AccessKey "Storage Access Key 1 or 2"

Pierwsze polecenie obniża wersję TLS, a drugie dodaje cloud witness.

Przy okazji pojawił się też problem podczas samego konfigurowania availability group:

The local node is not part of quorum and is therefore unable to process this operation. This may be due to one of the following reasons:

• The local node is not able to communicate with the WSFC cluster.

• No quorum set across the WSFC cluster.

For more information on recovering from quorum loss, refer to SQL Server Books Online.

(Microsoft.SqlServer.Management.HadrTasks)

Zazwyczaj ten błąd oznacza rzeczywiście problem z clustrem, względnie przyczyną jest to, że we właściwościach usługi SQL w Configuration Managerze nie jest zaznaczona opcja Enable AlwaysOn Availability Groups:

Istotne jest jednak żeby ta opcja została zaznaczona PO utworzeniu clustra. Jeśli w między czasie cluster został odinstalowany i zainstalowany na nowo, to trzeba tę opcję wyłączyć (restart SQL) i włączyć (restart SQL)

 

https://docs.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/availability-group-clusterless-workgroup-configure

 

By Rafał Kraik in SQL

Python: Kolorowy tekst w konsoli

2021-03-22

Większość terminali, zarówno na Unix, jak i pod Windows obsługują „kody ucieczki” pozwalające na takie sformatowanie napisu wyświetlanego w konsoli poleceniem print, aby wyświetlany tekst otrzymał odpowiedni kolor.

Szczegółowo ten mechanizm jest opisany tutaj:

https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

Jeśli jednak chcesz ominąć czytanie długiej dokumentacji, bo po prostu chcesz wyświetlić coś na kolorowo, to powinno wystarczyć rozumienie poniższej instrukcji:

print('\x1b[38;2;255;0;0m\x1b[48;2;255;255;0m' + 'WWW.MOBILO24.EU!' + '\x1b[0m')

Co tu się dzieje?

  • \x1b[ to właśnie znak ucieczki wprowadzający informacje kontrolne dla terminala. Jest to więc coś, co nie jest wyświetlane, tylko interpretuje to sobie terminal. Instrukcja tu zapisana kończy się za literką m. W powyższym przykładzie ta instrukcja występuje aż trzy razy:
    • pierwsza wprowadza kolor tekstu (foreground)
    • druga wprowadza kolor tła (background)
    • a trzecia resetuje terminal do ustawień domyślnych, czyli kasuje informacje o używanych kolorach
  • Fragment 38;2;255;0;0 oznacza:
    • 38 – określa, że definiujesz kolor tekstu (foreground)
    • 2 – określa, że ciąg dalszy jest w formacie RGB
    • kolejne 3 liczby definiują kolor RGB – tutaj czerwony
  • Fragment 48;2;255;255;0 oznacza:
    • 48 – określa, że definiujesz kolor tła (background)
    • 2 – określa, że ciąg dalszy jest w formacie RGB
    • kolejne 3 liczby definiują kolor RGB – tutaj żółty
  • Ostatnia instrukcja to wreszcie reset ustawień terminala, tutaj pomijając znak ucieczki i znak końca instrukcji „m”, istrukcja ta ogranicza się do „0”
  • Pośrodku wstawiasz tekst do wyświetlenia

Gotowe!

By Rafał Kraik in Python

SQL: Uzyskanie adresu IP v4 serwera

2021-03-12

W pewnych przypadkach trzeba ustalić jaki adres IPv4 jest przypisany do serwera. Można oczywiście zajrzeć do widoku sys.dm_exec_connections

Niestety ta metoda nie zadziała jeśli połączenie jest nawiązane przez Shared Memory, albo 127.0.0.1 albo (i to mój przypadek) przez IPv6, a tymczasem potrzebowałem IPv4.

Na całe szczęście udało się znaleźć ciekawy pomysł z wykorzystaniem xm_cmdshell i prostego polecenia ipconfig

https://stackoverflow.com/questions/142142/sql-query-to-get-servers-ip-address

Oto delikatnie zmieniona procedura – u mnie działa!

CREATE PROCEDURE #sp_get_ip_address (@ip VARCHAR(40) OUT)
AS
BEGIN
 SET NOCOUNT ON

DECLARE @Line varchar(200)
 DECLARE @pos int
 SET @ip = NULL
 CREATE TABLE #temp (line VARCHAR(200))
 
 EXECUTE sp_configure 'show advanced options', 1;
 RECONFIGURE
 EXEC sp_configure 'xp_cmdshell', 1
 RECONFIGURE

INSERT INTO #temp EXEC master..xp_cmdshell 'ipconfig'

EXECUTE sp_configure 'show advanced options', 1;
 RECONFIGURE
 EXEC sp_configure 'xp_cmdshell', 1
 RECONFIGURE

SELECT @Line = line
 FROM #temp
 WHERE UPPER (line) like '%IPV4%ADDRESS%'
 
 IF (ISNULL (@line,'***') != '***')
 BEGIN 
 SET @pos = CHARINDEX (':',@line,1);
 SET @ip = RTRIM(LTRIM(SUBSTRING (@line, @pos + 1, LEN(@line) - @pos)))
 END 
 DROP TABLE #temp

SET NOCOUNT OFF

END 
GO

DECLARE @ip VARCHAR(40)
EXEC #sp_get_ip_address @ip OUT
DROP PROCEDURE #sp_get_ip_address
SELECT @ip
By Rafał Kraik in SQL

MS Word/Office: Bład po aktualizacji. The application was unable to start correctly (0xc0000142)

2021-02-12

No cóż… zdarza się najlepszym…

Jako tako nie wiem, co się zespuło, ale dałem radę naprawić:

  • Panel Sterowania
  • Dodaj usuń programy
  • Odszukaj pakiet Office (może się różnie nazywać, bo MS dostarcza go w różnych pakietach)
  • Klinij modyfikuj
  • Wybierz napraw. U mnie były dwie możliwości naprawy – szybka i zaawansowana. Wybrałem szybką i po kawie office działał 🙂

Masz lepszy pomysł? Napisz!

By Rafał Kraik in Helpdesk