kabuk takma adında bir awk ifadesinde '$' ifadesinden nasıl kurtulur


-1

Çalışan tüm php işlemlerini öldürecek bir takma ad yazmaya çalışıyorum. ~/.bash_profile

alias killphp="ps aux | g [p]hp | awk '{print $3}' | xargs kill -9"

Bu komut, diğer adı kullanmadan killphpyazdığımda gayet iyi çalışır .. ama sadece çalıştırırsam bu tuhaflığı alıyorum:

grep: warning: recursive search of stdin
kill: illegal process id: (standard
kill: illegal process id: input):2:abdullah
kill: illegal process id: 10.9
kill: illegal process id: 0.2
kill: 2496576: No such process
kill: 20460: No such process
kill: illegal process id: ??
kill: illegal process id: S
kill: illegal process id: 7:14AM
kill: illegal process id: 0:00.28
kill: illegal process id: /usr/local/Cellar/php54/5.4.28/bin/php
kill: illegal process id: /Users/abdullah/dev/php/smartTaxi/app/console
kill: illegal process id: bcc:resque:worker-start
kill: illegal process id: -f
kill: illegal process id: request_queue
kill: illegal process id: --env=dev
kill: illegal process id: (standard
kill: illegal process id: input):3:abdullah
kill: illegal process id: 6.0
kill: illegal process id: 0.1
kill: 2486972: No such process
kill: 9708: No such process
kill: illegal process id: ??
kill: illegal process id: S
kill: illegal process id: 7:14AM
kill: illegal process id: 0:00.08
kill: illegal process id: php
kill: illegal process id: /Users/abdullah/dev/php/smartTaxi/app/../vendor/chrisboulton/php-resque/resque.php

eğer kaçarsam type killphpbunu alırım:

killphp is aliased to `ps aux | g [p]hp | awk '{print }' | xargs kill -9'

Öyle görünüşte $3awk argümanı yok! Nasıl kaçabilirim? Yaptığım çalıştı /$3ve $$3ancak bunların hiçbiri çalışır.

Yanıtlar:


3

Kullanmakta daha iyi olursun pkill. Ancak sorunuzu ele almak için, killphpbunu profilinize koyarak takma ad yerine bash işlevi yapın.

killphp() {
  ps aux | g [p]hp | awk '{print $3}' | xargs kill -9
}

Daha sonra takma ad gibi kullanabilirsiniz:

killphp

$Yazarak kurtulabilirdin \$, ama işlevlerle alıntı yapmaktan endişelenmene gerek yok.


sorular: 1) neden sadece pkilldaha iyidir kill? 2) bir kabuk fonksiyonunu komut satırından nasıl çalıştırırım?
abbood

ah pkill'in daha iyi olduğunu görüyorum .. bu beni uyandırma ve greplemenin tüm zorluklarından kurtarıyor .. nice
abbood

@abbood: Eğer (p) attern ile pkill diyoruz çünkü: pkill php. ps+ grepVb ile uğraşmak yok . Cevaptaki diğer soruyu cevapladı.
rici

@ abbood: Desen bir regex, ancak kısmi eşleşmeler iyi yani pkill supervisorçalışması gerekir. Zaten benim için çalışıyor.
rici

haklısın .. ben yanlış bir şey lol arıyordum :)
abbood
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.