[Chia sẻ của newbie] Lệnh screen trong Linux

Discussion in 'Linux - PHP - Python - C# - Java' started by money, Apr 16, 2019.

  1. money

    money Hương Chủ

    Ai biết rồi thì NEXT, đừng nói lời cay đắng. Ai chưa biết thì nhớ Like {doubt}

    Hôm qua trạm biến áp ở Thủ Đức nổ làm mất điện, thế là cái bash script đang chạy gần tuần nay bị đứt luôn do rớt mạng.

    Nghĩ bực mình quá, shell script chạy trên server mắc gì đến client mà nó lại như vậy. Money tui mới mở sách ra đọc. À thì ra đó giờ mình bánh bèo, vì terminal nó cần có signal đến server thì mới duy trì session để chạy tiếp, rớt mạng signal bị ngắt là nó tèo luôn (end session).

    Đó giờ mình chạy bash script thời gian 1 vài ngày là bình thường nhưng chưa bao giờ bị tình trạng này là do hên không rớt mạng giữa chừng :D

    Vậy làm sao để bash script tiếp tục chạy dù mình có end session của terminal (rớt mạng, muốn chủ động đóng cửa sổ terminal, ... )? Có 2 cách:
    1. Đơn giản là dùng lệnh: nohup command-name &
    2. Cách hay hơn (mình thích cách này) là dùng lệnh screen theo link sau: https://tuanvd.com/su-dung-lenh-screen-trong-linux/

    Thực sự gà Linux quá cũng khổ, bù lại được cái sướng là mỗi lần có vấn đề thì lại mò ra thêm kiến thức mới.
     
    Last edited: Apr 16, 2019
  2. no-reply

    no-reply Bang Chúng

    Em trước cũng dính phát quên ko đóng tiền nét nên bị mấy anh cúp mất điện. Thế là từ đó toàn phải tạo 1 con VPS cài lxde để chạy ssh vào những con server khác để chạy bash script. Cái "và" thì kinh điển nên e biết rồi, còn cái "núp ắp" với cái "sờ cờ rin" thì đúng là nay e mới đc biết. Nhiều lúc gõ terminal nhiều thì nghĩ bản thân mình bá quá mà giờ thấy trước giờ tù vãi đái. Kể cả cái vụ nhấn tab để nó gợi ý mới đây e cũng mới biết. {cry}
     
    wpresources likes this.
  3. money

    money Hương Chủ

    Nếu lên VPS chạy bash thì cũng dc vì thường VPS hầu như không rớt mạng. Tuy nhiên dùng screen vẫn hay hơn vì nó tạo background process cho bash script nên an toàn hơn.
     
  4. wpresources

    wpresources Bang Chúng

    Anh money mới biết screen vậy lâu nay crawl dữ liệu thế nào,để máy tính mở cùng vps à anh {yes}
     
  5. money

    money Hương Chủ

    anh crawl = tool chạy trên Windows mà
     
    wpresources likes this.
  6. Nai

    Nai MiddleMan Staff Member

    Em cũng chưa hiểu toàn bộ chia sẻ của anh cho lắm. Nhưng mà phần "command &" thì em hay dùng để chạy nhiều lệnh cùng lúc trên vps.
    Nohup thì chưa dùng :D
     
  7. money

    money Hương Chủ

    đang chạy long bash script mà bị cúp điện thì hiểu ngay ấy mà.
    & nó chỉ giúp em ẩn cái process đi chứ không giữ cho process đó chạy tiếp khi bị rớt mạng. Muốn nó chạy tiếp dù cho có rớt mạng/cúp điện ở client thì dùng nohup.
    Nhưng anh thấy dùng screen là tiện nhất. Giống nohup nhưng nhiều tiện ích hơn. Có thể tắt cửa sổ Putty đi thoải mái, khi nào cần thì connect và mở lại xem bash script đang chạy đến đâu.
     
    Nai likes this.
  8. console

    console Bang Chúng

    & là chạy command background luôn. Còn cái em đang nói là &&
     
    Nai likes this.
  9. Nai

    Nai MiddleMan Staff Member

    Vậy thì quá ngon, đang crawl mà treo nó cũng tự hiểu mà chạy tiếp luôn hả anh. Mình ko cần tự viết code riêng để run chỗ bị bỏ dở luôn?
    Lâu quá nên chắc em nhớ sai. Mà em chỉ nhớ là kết nối qua putty thì em chạy 10 lệnh && thì nó cũng bị kill hết nếu mất kết nối. Chỉ khi nào chạy trên console của vps luôn thì mới đảm bảo (nhưng reboot lại thì vẫn bị kill)
     
  10. money

    money Hương Chủ

    Nó chỉ có mục đích là giảm số connection ssh thôi em. Tức là mở 1 cửa sổ terminal có thể chạy dc nhiều background (thay vì 1 terminal chạy 1 lệnh) Nhưng khi đóng terminal thì các background processes này sẽ bị kill hết (cho dù nó chưa chạy xong). Nên mới phải dùng nohup hoặc screen.

    Treo máy laptop/client/vps chạy puttty thì ko sao, vì lúc đó shell script chạy trên server rồi. Còn nếu treo server thì pó tay.

    Em hình dung như này: screen nó sẽ gọi chương trình crawl của em chạy trên server. Khi em ngắt kết nối ssh đến server thì chỉ là ngắt kết nối mạng giữa laptop/client/vps và server thôi, còn chương trình crawl đã kích hoạt rồi thì nó cứ chạy cho đến khi nào xong thì thôi.

    Lệnh & sẽ bị kill khi em close ssh hoặc mất kết nối.
     
    Nai likes this.
  11. Trần Trọng Bách

    Trần Trọng Bách Sơ Nhập Giang Hồ

    Em cũng khoái dùng thằng screen này hơn nohup, cảm giác tương tác với chương trình đang chạy tiện hơn, trực quan hơn. Nohup có cái tiện hơn là dùng để lưu log trong trường hợp lười viết log, gặp lỗi nó tự ghi ra chứ screen không hiển thị nhiều nên có khi xem lại lỗi không đầy đủ được.

    Nếu ai chạy dạng service gặp lỗi tự chạy lại, khởi động lại vps cũng tự chạy lại thì có thêm thằng supervisor dùng cũng tiện.
     
    money likes this.
  12. EDM

    EDM Sơ Nhập Giang Hồ

    em đang dùng nohup gọi 1 file bash trong loop, trong file bash đó check file crawl mình cần chạy, không có trong terminal là sẽ gọi lại tiếp. Cách này tiện hơn là có thể tạo cronjob gọi file bash khi reboot. Screen cũng tiện luôn. Cơ bản tùy nhu cầu mỗi người.
     
    money likes this.
  13. Phan Thị

    Phan Thị Bang Chúng

    nohup và conjob run bash khi reboot là max khoẻ
     
    money likes this.
  14. console

    console Bang Chúng

    Ah cái này em biết anh, cái screen a mới share thì em mới biết, thanks a đã share. Còn em trc hay xài nohup. Nãy em reply chỉ là giải thích cho ku @Nai nó hiểu & khác với && :D
     
    money likes this.
  15. money

    money Hương Chủ

    Mình thích screen hơn vì nó cho mở lại 1 process để xem trong terminal, rất hữu ích trong trường hợp các bash script có show thông tin ra màn hình để xem.

    nohup có thể show info ra output file nhưng không trực quan bằng show ra màn hình. Và hình như không có cách nào để 'active' 1 command dùng nohup lên màn hình terminal đúng không nhỉ? (chỉ có thể dùng jobs để list ra các nohup đang chạy)
     
  16. NeiKzz

    NeiKzz Tân Thủ Thôn

    Mình thì lại hay dùng tmux, nó cũng khá giống screen, mình có thể đặt tên cho session mình đang làm:
    Ví dụ:
    tmux new -s <tên> : để tạo mới
    tmux a -t <tên>: để vào
    tmux ls : list ra :D
     
    Trần Trọng Bách and money like this.
  17. money

    money Hương Chủ

    Uh, hôm qua đọc có thấy thằng này mà đọc screen trước nên xài nó luôn :D
     
  18. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    A có thể dùng lệnh > 1.txt để export log ra 1 file text để xem củng dc ạ. E thích xem bằng log text hơn, search dễ
     
  19. money

    money Hương Chủ

    Uh, anh đã nói là xem trên output file rồi đó. Nhưng vẫn khoái xem trên màn hình hơn.
     
  20. Dung Vuong

    Dung Vuong Sơ Nhập Giang Hồ

    Xưa giờ e toàn dùng nohup. Gõ vài lệnh xong tắt vps