Nowy proces w terminalu i dalsza praca

Często zdarza się, że pracując w terminalu pod linux-em uruchamiając nowy proces poza terminalem chcemy wciąż mieć możliwość korzystania z linii poleceń terminala.

Jest to możliwe dzięki użyciu znaku specjalnego – ampersanda – ‘&’, na końcu komendy. Uruchamia się wtedy jakaś aplikacja już w nowym procesie i można dalej korzystać z terminala.

Przykład:
Komendą ‘ps’ wyświetlamy uruchomione procesy:

Załóżmy teraz, że chcemy otworzyć dowolny edytor tekstowy i dalej pracować w dotychczas otwartym oknie. Domyślnie nie jest to możliwe:

Jednak, gdy użyjemy znaku ampersanda:

Możemy wówczas pracować i w nowo otwartej aplikacji niezależnie z terminalem, gdyż utworzył się oddzielny proces, co jest pokazane na obrazku powyżej.

Problem z zalogowaniem się na konto MySQL

Gdy nie możemy zalogować się na Nasze konto w bazie danych mysql, np. :

sudo mysql -u root -p

Powyższa komenda nie działa – logowanie jest nieskuteczne.


Polecam usunąć wszystko co zainstalowaliśmy:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

sudo rm -rf /etc/mysql /var/lib/mysql

sudo apt-get autoremove

sudo apt-get autoclean

 

Zainstalować od nowa:

sudo apt-get install mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

 

Stworzyć nowego użytkownika:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

 

I nadać wszystkie przywileje dla utworzonego użytkownika:

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

 

Powinno teraz zadziałać logowanie:

mysql -h host -u user -p

 

 

Przydatne polecenia:

CREATE DATABASE name; #stworzenie nowej bazy danych
USE name; #wybór istniejącej bazy danych
SELECT DATABASE(); #podgląd w jakiej bazie danych aktualnie się znajdujemy

Zmiana rozmiaru zdjęcia w Ubuntu/terminalu

Najpierw instalujemy ImageMagick komendą:

sudo apt-get install imagemagick

Następnie dokonujemy zmiany rozmiaru zdjęcia:

convert -resize 20% source.png dest.jpg

gdzie kolejno podajemy procent ile ma mieć nowe zdjęcie w stosunku do oryginału. Plik źródłowy i końcowy z wybranym rozszerzeniem.

Utworzenie bazy danych, użytkownika i nadanie dostępu w PostgreSQL oraz logowanie

Jeżeli chcemy rozpocząć pracę z bazami danych, musimy początkowo wykonać kilka kroków by móc z niej korzystać.

Nejpierw logujemy się jako postgres:

sudo -i -u postgres

gdzie i- to logowanie, a u znaczy nazwę użytkownika.
Następnie logujemy się do bazy PostgreSQL:
psql

Teraz tworzymy bazę danych:
CREATE DATABASE <nazwa_bazy_danych>;

Potem tworzymy użytkownika z hasłem:
CREATE USER <nazwa_uzytkownika> WITH ENCRYPTED PASSWORD ‘<moje_haslo>’;

I przydzielamy uprawnienia:
GRANT ALL PRIVILEGES ON DATABASE <nazwa_bazy_danych> to <nazwa_uzytkownika>;

 

Logujemy się następująco:

psql -U <nazwa_uzytkownika> -d <nazwa_bazy_danych>

Może nam wówczas wyskoczyć taki błąd:
psql: error: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: FATAL: Peer authentication failed for user “<nazwa_uzytkownika>”

Musimy wtedy zlokalizować plik konfiguracyjny pg_hba.conf:
locate pg_hba.conf

Edytujemy dowolnym edytorem:
sudo gedit <znaleziona_lokalizacja>

Następującą linię:
local   <nazwa_bazy_danych>   <nazwa_uzytkownika>   peer

Zamieniamy na:
local   <nazwa_bazy_danych>   <nazwa_uzytkownika>   md5

Jeżeli nie ma, to dopisujemy. Pamiętamy o stosowaniu tabulacji, zamiast spacji pomiędzy wyrazami.
Po zapisaniu zmian, trzeba jeszcze zrestartować system:
sudo service postgresql restart

I teraz powinna się pojawić możliwość zalogowania:
psql -U <nazwa_uzytkownika> -d <nazwa_bazy_danych>

Ubuntu 20.04 i instalacja RStudio

W nowszych dystrybucjach linux-a może istnieć problem zainstalowania RStudio, które nie jest jeszcze na chwilę obecną wydane pod to konkretne wydanie Ubuntu (problem z zależnościami bibliotek).

Rozwiązanie problemu:
Uruchomić w terminalu komendę:

sudo aptitude install clang

Następnie otrzymamy mniej więcej coś takiego:

Następujące NOWE pakiety zostaną zainstalowane:   
  clang clang-10{a} lib32gcc-s1{a} lib32stdc++6{a} libc6-i386{ab} libclang-common-10-dev{a} libclang-cpp10{a} 
  libobjc-9-dev{a} libobjc4{a} libomp-10-dev{a} libomp5-10{a} libpfm4{a} libz3-4{a} libz3-dev{a} llvm-10{a} llvm-10-dev{a} 
  llvm-10-runtime{a} llvm-10-tools{a} 
0 pakietów aktualizowanych, 18 instalowanych, 0 do usunięcia i 0 nieaktualizowanych.
Do pobrania 57,8 MB archiwów. Zajęte po rozpakowaniu: 377 MB.
Następujące pakiety mają niespełnione zależności:
 libc6-i386 : Wymaga: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.3 is installed
Następujące działania rozwiążą problemy z zależnościami:

     Zatrzymanie bieżących wersji następujących pakietów:
1)     clang [niezainstalowany]                          
2)     clang-10 [niezainstalowany]                       
3)     lib32gcc-s1 [niezainstalowany]                    
4)     lib32stdc++6 [niezainstalowany]                   
5)     libc6-i386 [niezainstalowany]                     
6)     libclang-common-10-dev [niezainstalowany]         



Zaakceptować rozwiązanie? [Y/n/q/?] n

Wybieramy “n”, że się nie zgadzamy.
Następnie, gdy pojawi się:

Następujące działania rozwiążą problemy z zależnościami:

     Usunięcie następujących pakietów:                                      
1)     libc-dev-bin [2.31-0ubuntu9.3 (now)]                                 

     Instalacja następujących pakietów:                                     
2)     libc-dev-bin:i386 [2.31-0ubuntu9.2 (focal-updates)]                  

     Cofnięcie następujących pakietów do wcześniejszych wersji:             
3)     libc6 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]     
4)     libc6:i386 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]
5)     libc6-dbg [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 
6)     libc6-dev [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 



Zaakceptować rozwiązanie? [Y/n/q/?] Y

Akceptujemy wyświetlone rozwiązanie poprzez “Y”. W następnym kroku też kontynuujemy i powinna zacząć się wybrana konfiguracja.
Po zakończeniu instalujemy RStudio komendą:

sudo gdebi rstudio-[downloaded_version].deb

Heroku deploy – z przykładem aplikacji

Przedstawię pokrótce jak można wrzucić utworzoną aplikację na serwery Heroku.

 

Tutaj przykład utworzonego prostego “Hello World” we frameworku Javy – Springu:
https://github.com/traininguniverse/HerokuDeployExample

 

Ściągamy repo i następnie je otwieramy w terminalu:

cd HerokuDeploExample-master

 

Żeby mieć zastosowanie do deploy-owania nowej własnej aplikacji usuwamy ukryty folder “.git”.

 

I zaczynamy tak jakbyśmy mieli tworzoną aplikację od nowa.
Najpierw inicjalizujemy puste repozytorium:

git init

 

Dodajemy na podstawie danych z Heroku ustawienia lokalne git:

git config user.email “imie.nazwisko@domena.pl”
git config user.name “Imie Nazwisko”

 

Dodajemy pliki i zatwierdzamy:

git add .
git commit -m “Add app”

 

Tworzymy aplikacje na Heroku – podajemy nazwę:

heroku create app-name

 

Sprawdzamy czy zdalne repo jest dobrze ustawione:

git remote -v

Jeżeli istnieje już utworzona aplikacja (np. poprzez panel na stronie internetowej), to wywołujemy komendę:
heroku git:remote -a app-name

 

Wrzucamy repozytorium na serwer:

git push heroku master

Automatycznie ta przykładowa aplikacja z github-a zostaje już uruchomiona.

 

Otwieramy aplikację komendą:

heroku open

W przeglądarce dodajemy jeszcze na końcu w pasku adresu napis “/hello”.
Powinno ukazać Nam się tekst “Hello World”.

Montowanie zewnętrznego/dodatkowego dysku w Ubuntu 20.04 Focal Fossa

Często zdarza się, że pewne partycje, które trzeba montować ręcznie pod systemem Linux, klikajać w ich ikonę w menedżerze plików, Nautilusie nie zawsze mają chciane przez nas prawa dostępu, czyli np. zapis danych.
Najpierw przedstawię metodę automatycznego montowania tych partycji/dysków wraz ze startem systemu.
Niestety czasem ten sposób jest zawodny, gdyż często pojawiają się błędy systemu plików i urządzenie nie jest montowane, np. przy NTFS.

Automount z startem systemu:

Pobranie UUID konkretnego urządzenia: (można łatwo skopiować/wkleić w terminalu uuid poprzez kombinację [(SHIFT +CTRL +C)=kopiuj, (SHIFT +CTRL +V)=wklej]


ls -l /dev/disk/by-uuid/*

Edycja pliku systemowego do automontowania urządzeń:


mkdir /media/folder-montowania-urzadzenia
sudo nano /etc/fstab

W powyższym pliku zapisujemy sekwencję, rozdzieloną znakiem tabulacji:

UUID     /dev/nazwa-urzadzenia-w-linuksie/     /media/folder-montowania-urzadzenia     system-plikow,np.ntfs     defaults(ustawienia domyślne)     0     0

Krótkie wyjaśnienia:
Najpierw tworzymy folder do zamontowania dysku.
W pliku w jednej linii wprowadzamy dane.
I tu, zamiast defaults możemy, np. zastosować:
exec = wykonywanie plików
rw = tryb odczytu-zapisu
users = wszyscy użytkownicy
auto = tryb automatyczny
remount = ponowne montowanie
wpisujemy powyższe słowa kluczowe w miejscu defaults, po przecinku bez żadnych odstępów pomiędzy słowami
Ostatnie cyfry: 0 0, to:
dump – zazwyczaj zero
pass – używane przez program fsck, w której kolejności system plików jest sprawdzany. Wartość admina/roota jest 1. Swap/partycja wymiany nie musi być sprawdzana i jest równa zero. Inne systemy plików powinny mieć 2.

Montujemy wszystkie urządzenia ponownie:


mount -a

I powyższy sposób jest jak najbardziej prawidłowy, niestety jak wystąpią jakieś błędy zdarza się, że urządzenie zostanie zamontowane, np. tylko do odczytu, albo w ogóle.

 

Druga metoda, to stworzenie prostego skryptu w bashu:

#!/bin/bash 
#to jest komentarz

#odmontowywujemy urządzenie 
sudo umount /dev/nazwa-urzadzenia media/folder-montowania 

#montujemy 
sudo mount -o defaults,exec,rw,users,auto -t ntfs /dev/nazwa-urzadzenia media/folder-montowania 

#naprawiamy ewentualne błędy w systemie plików 
sudo ntfsfix /dev/nazwa-urzadzenia 

#przemontowywujemy ponownie 
sudo mount -o remount,defaults,exec,rw,users,auto -t ntfs /dev/nazwa-urzadzenia media/folder-montowania

Nie zapomnijmy o nadaniu praw wykonania do pliku:


chmod +x nasz-skrypt.sh

Jeszcze większym ułatwieniem jest stworzenie skrótu na pulpicie do skryptu (metoda działa pod Ubuntu 20.04):

Tworzymy plik na pulpicie z rozszerzeniem .desktop:

#!/usr/bin/env xdg-open
[Desktop Entry] 
Version=1.0 
Type=Application 
Terminal=true
Exec=/home/user/mount-disks.sh 
Name=Mount disks
Comment=Mount disks 
Icon=/home/user/Obrazy/hdd-mount.ico

Exec – ścieżka do naszego skryptu
Icon – ikona, jaką chcemy żeby się nam wyświetlała

Nie zapomnijmy jak poprzednio nadać prawa wykonania i jeszcze klikamy na pliku prawym przyciskiem myszy i wybieramy “Zezwól na uruchamianie”.

Teraz za pomocą drugiej metody, po uruchomieniu skryptu wpisujemy hasło root-a, sprawdzane i naprawiane są struktury plików i zamontowane powinny być nasze urządzenia dla wszystkich użytkowników z prawami wykonania, odczytu i zapisu.

Konwersja obrazu .nrg na .iso i montowanie obrazu .iso w linuksie

W powyższym celu wykonujemy w terminalu następujące komendy:

Konwersja obrazu .nrg do .iso:

$poweriso convert file.nrg -o file.iso

 

Tworzymy jakiś dowolny folder pod którym chcemy zamontować nasz przerobiony obraz:

 user@computer$ mkdir /iso/

 

Jako administrator montujemy obraz pod wskazaną lokalizacją:

 user@computer$ sudo mount file.iso /iso/