Nếu mv
được bắt đầu như:
ssh host mv x y
Sau đó mv
sẽ nhận được SIGPIPE (và chết) nếu nó cố gắng viết bất cứ điều gì vào thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn (như thông báo lỗi).
Nếu bạn bắt đầu một phiên tương tác như:
ssh host
Và bắt đầu mv
từ lớp vỏ tương tác trong đó, khi phía chính của thiết bị đầu cuối giả bắt đầu sshd
sẽ bị đóng (khi ssh
đóng kết nối TCP khi thoát), người lãnh đạo phiên liên kết với phía nô lệ của thiết bị đầu cuối giả, rằng là vỏ tương tác từ xa, sẽ nhận được tín hiệu SIGHUP (gác máy).
Khi nhận được tín hiệu đó, các shell (trừ khi bạn phát ra a trap '' HUP
) thường chuyển tiếp tín hiệu đó đến tất cả các quy trình trong công việc mà chúng đã bắt đầu, trừ khi bạn nói rõ ràng là không (như với disown
hoặc với &|
một số shell).
Các quy trình khác (như mv
) thường sẽ chết khi nhận được tín hiệu đó trừ khi chúng được yêu cầu bỏ qua nó (bằng cách sử dụng nohup
hoặc nếu cha mẹ của chúng bỏ qua nó).
Nếu bạn đã ban hành một:
trap '' HUP
Sau đó, tất cả các công việc bắt đầu sau khi nó sẽ kế thừa nó và sẽ bỏ qua SIGHUP.
Shell sẽ không chết vì tín hiệu SIGHUP được gửi khi ngắt kết nối nhưng sẽ thoát ở dấu nhắc tiếp theo, vì stdin của nó không còn nữa. Khi thoát ra, một số shell gửi SIGHUP đến các công việc (không bị từ chối) của chúng. Những người bắt đầu sau khi trap '' HUP
sẽ bỏ qua nó, những người khác sẽ chết.
Nói tóm lại, trong trường hợp đó, trừ khi bạn thực hiện các biện pháp phòng ngừa trước để nó không xảy ra, bạn mv
sẽ chết.
Để tránh lần sau, nếu sử dụng tcsh
, zsh
hoặc bash
, trước khi tắt máy, nhấn Ctrl-Zđể tạm dừng mv
, nhập bg
để tiếp tục ở chế độ nền và disown
để từ chối .
Hoặc bạn có thể sử dụng screen
hoặc tmux
. Khi có SIGHUP, những ứng dụng đó sẽ tách ra khỏi thiết bị đầu cuối máy chủ hiện tại của chúng, nhưng các ứng dụng đang chạy trong thiết bị đầu cuối mà nó mô phỏng sẽ tiếp tục chạy không đầu và bạn có thể gắn lại phiên này sang thiết bị đầu cuối khác để xem cách thức hoạt động mv
.
Hoặc sử dụng nohup mv
để làm cho mv
miễn dịch với SIGHUP và có đầu ra và lỗi của nó đi đến một nohup.out
tệp mà bạn có thể kiểm tra sau.
Bây giờ, tôi không biết về nhà cung cấp dịch vụ lưu trữ cụ thể của bạn, nhưng với một số người, khi bạn ssh
vào ví dụ, bạn không bắt đầu một phiên shell ở đó mà chỉ gắn vào bảng điều khiển, đó là phiên đã được bắt đầu và khi bạn thoát, bạn không chấm dứt phiên đó, chỉ tách ra khỏi phiên đó. Vì vậy, cái vỏ không bị giết, cũng không mv
. Nếu đó là trường hợp, bạn sẽ nhận thấy rằng ps
chạy từ đó sẽ cung cấp cho bạn giống nhau pid
cho vỏ của bạn qua hai ssh
phiên riêng biệt .