Puncte:0

Rulați comenzi care rulează într-un shell ca script

drapel in

Rularea următoarelor comenzi într-un shell rulează fără probleme:

ssh user@machine systemctl status my-service.service
ssh user@machine sudo systemctl stop my-service.service
scp -r ./my-service/* user@machine:/home/user/my-service
ssh user@machine chmod +x /home/user/my-service/my-service
ssh user@machine sudo systemctl start my-service.service
ssh user@machine sudo systemctl status my-service.service

Cu toate acestea, punând acest lucru în a deploy.sh Fișierul duce la faptul că niciuna dintre cele de mai sus nu poate fi executată.

Erori:

  • Numele de unitate nevalid „my-service” a fost eliminat ca „my-service\x0d” (poate ar trebui să utilizați systemd-escape?)
  • Unitatea my-service\x0d.service nu a putut fi găsită.
  • Numele de unitate nevalid „my-service.service” a fost eliminat ca „my-service.service\x0d” (poate ar trebui să utilizați systemd-escape?)
  • Nu s-a putut opri my-service\x0d.service: Unitatea my-service.service\x0d.service nu a fost încărcată. : Nu există un astfel de fișier sau directorynlock/
  • chmod: nu poate accesa '/home/user/my-service/my-service'$'\r': Nu există un astfel de fișier sau director
  • Numele de unitate nevalid „my-service.service” a fost eliminat ca „my-service.service\x0d” (poate ar trebui să utilizați systemd-escape?)
  • Nu s-a pornit my-service.service\x0d.service: Unitatea my-service.service\x0d.service nu a fost găsită. Numele de unitate nevalid „my-service.service” a fost eliminat ca „my-service.service\x0d” (poate ar trebui să utilizați systemd-escape?)
  • Unitatea my-service.service\x0d.service nu a putut fi găsită.

Unii au fost despărțiți. Pare ceva legat de evadare. Din anumite motive, adăugarea unui spațiu la sfârșitul liniilor face ca acesta să funcționeze, dar nu fără erori.

Googlarea erorilor arată câteva accesări despre utilizare -- și adăugarea acestuia împreună cu spațiul de sfârșit face ca unele comenzi să funcționeze, dar totuși dă o eroare de evadare.

Puncte:2
drapel cn

Aș plăti dolari gogoșilor pe care le-ați editat acest fișier pe sau de pe un Windows mașinărie.

Linux folosește \x0a (cod ASCII 10) pentru a separa liniile dintr-un fișier (sau script).
Windows folosește combinația de \x0d ("Carriage_Return", cod ASCII 13) și \x0a ("Line Feed", ASCII 10) pentru a face la fel loc de munca.

Dați un fișier editat de Windows unei mașini Linux și vede fiecare rând ca având o \x0d străină la capăt.

Ia-ți a decent Editor Windows (NotePad++ este gratuit și foarte recomandat) sau învață cum să folosești vi. Sigur, are propria sa curbă de învățare, dar unele dintre capacitățile sale s-ar putea să te surprindă!

drapel in
ma simt atat de prost :-) Asta a fost, am editat fișierul în vscode. S-a schimbat din CRLF în LF în dreapta jos, l-a salvat și a rulat fără probleme.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.