Có thể thay đổi một quy trình đang chạy trong linux, để nó không thoát khi đăng xuất?


2

Tôi biết bạn có thể sử dụng nohup để duy trì công việc chạy sau khi đăng xuất, nhưng còn một quy trình đang chạy thì sao?

Có cách nào để thay đổi trạng thái của nó, để nó tiếp tục chạy ngay cả khi tôi đăng xuất không?

Câu trả lời:


5

Trong Bash, bạn có thể disown quá trình .

disown [-ar] [-h] [jobspec … ]     

Mỗi jobspec được loại bỏ khỏi bảng các công việc đang hoạt động.

  • -h SIGHUP không được gửi đến công việc nếu shell nhận được SIGHUP. công việc hiện tại .
  • -a tất cả -r điều hành công việc.

Xem thêm: Shell Stuff: kiểm soát công việc và màn hình

Nếu bạn sử dụng bash shell, thì bạn có một giải pháp thay thế (không phải lúc nào bạn cũng vậy?) Thay vì sử dụng nohup, chỉ cần chạy lệnh bình thường, đặt nó vào nền một trong hai cách chúng ta đã thảo luận và sau đó từ chối - h công việc.

$ tar cjf /backup/rob/home.tar.bz2 . &

[1] 32089
$ disown -h

Sau đó, bạn có thể đăng xuất an toàn hoặc đóng thiết bị đầu cuối của bạn. Cũng như nohup, nếu bạn đóng thiết bị đầu cuối hoặc đăng xuất, bạn sẽ không thể truy cập lệnh đó trực tiếp bằng các công việc và %<N> hoặc là fg <N> lệnh ..

Các bài viết liên quan trên mạng Stack Exchange:


Vỏ Z cũng có % thay thế - ví dụ ví dụ của bạn có thể được gõ là disown %[TAB] và zsh sẽ mở rộng nó thành disown %tar. Vì tò mò - bash có cơ chế tương tự không?
new123456
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.