Eerste probleem
U probeert het commando mysqld_safe
. uit te voeren , zodat het commando op het PATH moet staan waar de terminal naar opdrachten zoekt. (Je kunt deze locaties bekijken door echo $PATH
uit te voeren . De verschillende locaties zijn gescheiden door een dubbele punt).
Aangezien u een bestand probeert uit te voeren dat zich in de lokale map bevindt, typt u ./mysqld_safe
om de shell te vertellen dat je een pad naar het bestand geeft, anders zal het ernaar zoeken in het PATH . (U kunt het bestand overal uitvoeren door het volledige pad op te geven).
Een andere oplossing is om een symbolische link te maken in /usr/local/bin/
dat verwijst naar /usr/local/mysql/mysqld_safe` (wat het pad naar het commando is als ik je goed heb begrepen). Op die manier kun je het commando overal uitvoeren, omdat het zich in het pad bevindt dat de shell zoekt.
Tweede probleem
De cat
commando omgeven door backticks wordt uitgevoerd door de shell before het uitvoeren van het sudo-commando (als het bestand voor iedereen leesbaar was, zal de shell iets uitvoeren als:sudo kill 12345
).
De cat
uitvoeren als root moet je dit commando uitvoeren:
sudo bash -c 'kill `cat /usr/local/mysql/data/rodongi.pid`'
Op die manier voer je bash uit als root, die op zijn beurt de kill
. uitvoert commando, en leest dus de rodongi.pid
bestand als root.