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.