banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix kill 1 process chạy quá thời gian  XML
  [Question]   kill 1 process chạy quá thời gian 14/05/2008 08:52:21 (+0700) | #1 | 130425
3do
Member

[Minus]    0    [Plus]
Joined: 19/04/2008 21:57:09
Messages: 24
Offline
[Profile] [PM]
Tôi có 1 script a.sh, có lệnh nào trong linux chạy script trên và tự động kill nó nếu nó chạy quá 1 khảong thời gian nào đó ko?

kiểu
Code:
xxx -c "./a.sh" -t 5 (chạy a.sh trong tối đa 5s)

Cảm ơn
[Up] [Print Copy]
  [Question]   kill 1 process chạy quá thời gian 14/05/2008 09:10:52 (+0700) | #2 | 130428
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

3do wrote:
Tôi có 1 script a.sh, có lệnh nào trong linux chạy script trên và tự động kill nó nếu nó chạy quá 1 khảong thời gian nào đó ko?

kiểu
Code:
xxx -c "./a.sh" -t 5 (chạy a.sh trong tối đa 5s)

Cảm ơn 

Bạn có thể đọc:
+ man at
+ man sleep
sau đó tự viết một cái
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 09:36:59 (+0700) | #3 | 130430
3do
Member

[Minus]    0    [Plus]
Joined: 19/04/2008 21:57:09
Messages: 24
Offline
[Profile] [PM]
xin hỏi làm thế nào để chạy 1 script và lấy proccess id của nó sau khi chạy?
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 09:47:26 (+0700) | #4 | 130432
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

3do wrote:
xin hỏi làm thế nào để chạy 1 script 

$ bash <script_name>
$ sh <script_name>
$ ./<script_name>

3do wrote:

...
và lấy proccess id của nó sau khi chạy? 

$ man pidof
$ ps aux | grep <script_name> | awk '{print $2}'

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 10:03:17 (+0700) | #5 | 130436
3do
Member

[Minus]    0    [Plus]
Joined: 19/04/2008 21:57:09
Messages: 24
Offline
[Profile] [PM]
tôi không nói ý này. trong hệ thống của tôi có nhiều proccess trùng tên với proccess đó nên ko dùng pidof đc.
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 11:19:57 (+0700) | #6 | 130445
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]
Nếu liên quan đến process thì gõ từ khóa monit trên HVA hoặc trên Google

Good luck
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 11:20:14 (+0700) | #7 | 130447
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

3do wrote:
tôi không nói ý này. trong hệ thống của tôi có nhiều proccess trùng tên với proccess đó nên ko dùng pidof đc. 

Bạn thử tham khảo đoạn này xem:
Code:
runtime=${1:-5m}
mypid=$$
bash a.sh &
pid_of_a=$!
sleep $runtime
kill -s SIGTERM $pid_of_a

Lưu lại với tên bất kỳ, sau đó chạy ở chế độ "debug" với tùy chọn -x để xem nó làm việc theo từng bước:
Code:
$ bash -x <script_name>
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 12:19:39 (+0700) | #8 | 130453
3do
Member

[Minus]    0    [Plus]
Joined: 19/04/2008 21:57:09
Messages: 24
Offline
[Profile] [PM]
cảm ơn bạn.

Còn 1 câu hỏi nữa là nếu a.sh chạy xong trước thời gian qui định thì có cách nào để stop script đang sleep kia không?
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 13:08:44 (+0700) | #9 | 130461
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Bình thường, khi chạy gõ ./a.sh thì nó có chạy như một background process không, tức là:
+ hiểu nôm na như những services được viết dưới dạng init script (httpd, tomcat, oracle ...). Sau khi gõ /etc/init.d/tomcat start chẳng hạn, nó start lên, và chạy như một background process, rồi trả về command prompt của shell.
+ hay là: script a.sh của bạn, khi chạy sẽ dừng ở đâu đó mà không trả về command prompt của shell, nhấn Ctrl + C, process này sẽ bị kill.

3do wrote:
cảm ơn bạn.

Còn 1 câu hỏi nữa là nếu a.sh chạy xong trước thời gian qui định thì có cách nào để stop script đang sleep kia không? 

+ Làm sao biết a.sh đã chạy xong?
+ Chắc là chỉ có cách nhấn Ctrl + C
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 19:44:43 (+0700) | #10 | 130474
3do
Member

[Minus]    0    [Plus]
Joined: 19/04/2008 21:57:09
Messages: 24
Offline
[Profile] [PM]
script a.sh chạy xong khi trong hệ thống ko còn proccess id của nó nữa. Như vậy cần sleep từng giây cho đến khi hết thời gian hạn định, mỗi lần sleep xong thì check xem proccess id đó có còn hay không. Vấn đề là mình ko biết cách nào để check 1 proccess id có tồn tại hay không smilie
[Up] [Print Copy]
  [Question]   Re: kill 1 process chạy quá thời gian 14/05/2008 21:58:05 (+0700) | #11 | 130489
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

3do wrote:
script a.sh chạy xong khi trong hệ thống ko còn proccess id của nó nữa. Như vậy cần sleep từng giây cho đến khi hết thời gian hạn định, mỗi lần sleep xong thì check xem proccess id đó có còn hay không. Vấn đề là mình ko biết cách nào để check 1 proccess id có tồn tại hay không smilie  

$ ps -p <process_ID> | grep <process_ID> | wc -l

hoặc:
$ ps -eo pid | grep <process_ID> (nhớ dùng ^ và $ để chặn đầu cuối)
Let's build on a great foundation!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|