2009-12-01 30 views
10

Tôi đã tạo ra một công việc với lệnh at trên Solaris 10Danh sách và giết tại công việc trên UNIX

Nó làm việc bây giờ nhưng tôi muốn giết nó nhưng tôi không biết làm thế nào tôi có thể tìm ra số việc làm và làm thế nào để giết công việc hoặc quy trình đó.

+2

Đầu tiên là 'man ps'. Đọc cái đó. Sau đó, cập nhật câu hỏi của bạn dựa trên những gì bạn đọc. –

+1

S.Lott: công việc 'at' không giống như quy trình. –

+0

công việc đang chạy ở chế độ nền, khi tôi chạy ps -ef tôi có thể thấy một số tiến trình đang chạy trong các lệnh của tôi mà tập lệnh bash của tôi chứa các lệnh đó, runnig 15 giây cùng một lúc, và id luôn luôn thay đổi khi tôi chạy ps -ef và i không thể giết bằng cách giết process_id – soField

Trả lời

13

Bạn sẽ có thể tìm thấy lệnh của bạn với một ps biến thể như:

ps -ef 
ps -fubob # if your job's user ID is bob. 

Sau đó, khi nằm, nó nên là một vấn đề đơn giản để sử dụng kill để giết quá trình (quyền cho phép).

Nếu bạn đang nói về việc loại bỏ công việc trong hàng đợi at (chưa chạy), bạn có thể sử dụng atq để liệt kê chúng và atrm để loại bỏ chúng.

+0

nó không nằm trong hàng đợi nó chạy mỗi 15 giây cùng một lúc – soField

+0

Nếu bạn có một quá trình khởi động các công việc khác (những cái mới sau mỗi 15 giây), bạn cần phải giết cái đầu tiên, để hành vi dừng lại. Nó vẫn đang sử dụng ps để định vị nó và giết nó để chấm dứt nó. – paxdiablo

+0

công việc cấp cao nhất cũng đang thay đổi và nhận id mới sau mỗi 15 giây – soField

8

Để xóa công việc chưa chạy, bạn cần lệnh atrm. Bạn có thể sử dụng lệnh atq để lấy số của nó trong danh sách.

Để giết một công việc mà đã bắt đầu chạy, bạn sẽ cần phải grep cho nó bằng cách sử:

ps -eaf | grep <command name> 

và sau đó sử dụng kill để ngăn chặn nó.

Một cách nhanh hơn để làm điều này trên hầu hết các hệ thống này là:

pkill <command name> 
1

Đầu tiên

ps -ef 

để liệt kê tất cả các quy trình. Lưu ý số quy trình của số bạn muốn giết. Sau đó,

kill 1234 

bạn đã thay thế 1234 bằng số quy trình mà bạn muốn.

Ngoài ra, nếu bạn hoàn toàn chắc chắn rằng chỉ có một quá trình với một tên cụ thể, hoặc bạn muốn giết nhiều quy trình đó chia sẻ cùng tên

killall processname 
+1

'killall' hoạt động trên Linux, nhưng lưu ý rằng trên một số hệ thống, như Solaris, nó thực sự * giết chết tất cả các tiến trình *, mà có lẽ không phải là những gì bạn muốn. –

+1

Wow, Solaris là DUMB. Tại sao bạn lại muốn làm điều đó? Giống như có bí danh 'rm -rf /' – polvoazul

2

at -l vào danh sách công việc, mang đến cho trở lại như này:

age2%> at -l 
11  2014-10-21 10:11 a hoppent 
10  2014-10-19 13:28 a hoppent 

atrm 10 giết chết công việc 10

Hoặc để sysadmin của tôi nói với tôi, và nó

Các vấn đề liên quan