Làm thế nào để chạy một kịch bản shell trong nền?


Câu trả lời:


93

Tùy thuộc vào những gì bạn muốn, chỉ cần thêm một & vào cuối lệnh

script.sh &
command &

Nếu bạn đang chạy nó trong một thiết bị đầu cuối và sau đó bạn muốn đóng thiết bị đầu cuối, hãy sử dụng nohup hoặc từ chối

không

nohup script.sh &

từ chối

script &
disown

Nếu đó không phải là những gì bạn đang theo đuổi, xin vui lòng cụ thể hơn trong câu hỏi của bạn.


Bạn được chào đón nhất
Panther

Điều gì xảy ra nếu tôi cần chạy 2 scipts và sau đó tôi muốn chạy htopđể xem việc sử dụng CPU, nhưng vấn đề là tập lệnh thứ 1 bắt đầu tạo đầu ra cho bàn điều khiển và nó dường như ngăn các hành động khác (chạy tập lệnh thứ hai, chạy htop).
mrgloom

nếu tập lệnh có các câu lệnh in, chúng có được hiển thị trên thiết bị đầu cuối của tôi không?
Charlie Parker

2

bạn chỉ có thể chuyển màn hình và chạy tập lệnh của mình trên màn hình thứ 2 đó. Khi tập lệnh bắt đầu vào ngày 2, hãy quay lại số 1 và làm bất cứ điều gì bạn muốn. Màn hình thứ 2 sẽ ở chế độ nền dưới dạng "cửa sổ đầu cuối" bổ sung. và nó sẽ không dừng xử lý ngay cả khi bạn đóng kết nối ssh của mình trong khi đang ở màn hình thứ nhất.

screen --help
Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

Options:
-4            Resolve hostnames only to IPv4 addresses.
-6            Resolve hostnames only to IPv6 addresses.
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-ls [match]   or -list. Do nothing, just list our SockDir [on possible matches].
-L            Turn on output logging.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-r [session]  Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.01.00devel (GNU) 2-May-06".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute <cmd> as a screen command in the specified session.

ctrl+ a, csẽ tạo một "cửa sổ" mới trong phiên màn hình hoạt động của bạn. Bạn có thể chuyển đổi giữa nhiều cửa sổ (như Ansgar đã chỉ định) với ctrl+ a, ncho cửa sổ tiếp theo và ctrl+ a, pcho cửa sổ trước.

ctrl+ a, "sẽ cung cấp cho bạn một danh sách tất cả các cửa sổ đang mở của bạn.

Thêm: https://superuser.com/questions/476709/quickly-switching-b between-virtual-sairs-screen


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.