Có cách nào để lưu một phiên tmux không? Nói cách khác, nếu tôi khởi động lại máy tính, tôi sẽ luôn bị mất các phiên?
*** System restart required ***
Có cách nào để lưu một phiên tmux không? Nói cách khác, nếu tôi khởi động lại máy tính, tôi sẽ luôn bị mất các phiên?
*** System restart required ***
Câu trả lời:
Có, nếu bạn khởi động lại máy tính, bạn sẽ mất các phiên. Phiên không thể được lưu. Nhưng, họ có thể được viết kịch bản. Những gì hầu hết làm trong thực tế là kịch bản một số phiên để bạn có thể tạo lại chúng. Chẳng hạn, đây là một tập lệnh shell tầm thường để tạo một phiên:
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [ $? != 0 ]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
Đây là những gì nó làm. Đầu tiên, nó kiểm tra xem đã có phiên nào có tên đó chưa (trong trường hợp này, tên ban đầu là "script") với phiên có tmux . Nó kiểm tra mã trả lại. Nếu đã có một phiên liên tục với tên đó, nó sẽ bỏ qua chu trình "nếu" và đi thẳng đến dòng cuối cùng, nơi nó gắn vào phiên. Mặt khác, nó tạo một phiên và gửi một số khóa cho nó (bây giờ chỉ chạy một tập lệnh ngẫu nhiên). Sau đó, nó thoát khỏi khối "nếu" và đính kèm.
Đây là một mẫu rất tầm thường. Bạn có thể tạo nhiều cửa sổ, tấm và tương tự trước khi đính kèm.
Điều này sẽ không giống với những gì bạn yêu cầu, mặc dù. Nếu bạn thực hiện bất kỳ thay đổi nào đối với phiên, chẳng hạn, bạn đổi tên một cửa sổ và tạo một cửa sổ mới trong đó, nếu bạn khởi động lại những thay đổi đó tất nhiên sẽ không được lưu.
Có một số công cụ giúp dễ dàng xử lý các phiên kịch bản, mặc dù tôi thích làm thủ công hơn (tôi nghĩ nó linh hoạt hơn). Những công cụ đó là Tmuxinator và Teamocil .
Nguồn thông tin chính của tôi là cuốn sách "Cuốn sách thực dụng" Tmux.
tmux send-keys ...
dòng là gì?
some command; if [ $? != 0 ]; then .....
dễ viết hơn (và dễ đọc) như : if ! some command; then .....
.
Tôi đã viết một tập lệnh bash đơn giản , vẫn tồn tại các phiên tmux, cửa sổ và các thư mục làm việc hiện tại trong mỗi tập.
Gọi nó như vậy theo cách thủ công hoặc định kỳ từ cron (vì bạn có thể quên):
tmux-session save
Nó sẽ viết cho ~/.tmux-session
. Khôi phục chúng sau khi khởi động lại như vậy:
tmux-session restore
Tôi thấy điều này tốt hơn nhiều so với một kịch bản Perl dài vài trăm dòng.
Tôi đã viết một plugin tmux cho phép bạn lưu môi trường tmux hoàn chỉnh và khôi phục nó sau. Nó cố gắng để thực sự chi tiết để bạn có cảm giác bạn không bao giờ thoát khỏi tmux.
https://github.com/tmux-plugins/tmux-resurrect
Cập nhật: hiện có plugin tmux-continuum thực hiện lưu nền tự động của môi trường tmux. Tùy chọn nó cũng * tự động * khôi phục tmux env sau khi khởi động lại máy tính.
tmuxinator là một công cụ được viết bằng Ruby, có thể được sử dụng để tạo và quản lý các phiên tmux một cách dễ dàng. Nó có thể được sử dụng để tạo một dự án, sau này có thể được khởi tạo dưới dạng phiên tmux.
Hãy xem xét giải pháp một phần này được tìm thấy ở đây
Tác giả tạo ra một chức năng lưu lịch sử của phiên tmux để duy trì trạng thái của phiên tmux sau khi khởi động lại máy chủ.
Tôi sử dụng thành công https://github.com/jimeh/tmuxifier để tạo lại các phiên. Điều này có thể được cài đặt mà không có ruby, chỉ cần sử dụng git.
Các mẫu khá tự giải thích, ví dụ: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh