Kabuk

2013-07-12 29 views
11

ile rc.local içine nasıl satır eklenir Bir Ubuntu 12.04 üzerinde çalışıyorum ve bir otomatik ortam oluşturma kabuğu yazıyorum. Kabukta rc.local'da bir şeyi değiştirmem gerekiyor.Kabuk

Bu benim rc.local'ım şimdi.

#!/bin/sh -e 
#...... 

exit 0 

böyle değiştirmek istiyorum: Şimdi

#!/bin/sh -e 
#...... 

nohup sh /bocommjava/socket.sh & 

exit 0 

bunu değiştirmek için nano kullanın Rc.local içine hattını ekleyebilirsiniz herhangi komut var mı?

+0

siz de Ask Ubuntu bu konuyu gündeme düşündünüz mü değiştirin? –

+0

@wleoncio um ... İyi tavsiye. ama sorularımı iki sitede yayınlamama izin veriyorlar mı? – missingcat92

+0

Sanırım, en azından bunu yaparken hiç sorun yaşamadım. ;) –

cevap

25

Kullanım Testi

için Sed

sed -e '$i \nohup sh /bocommjava/socket.sh &\n' rc.local 

Gerçekten

sed -i -e '$i \nohup sh /bocommjava/socket.sh &\n' rc.local 
+0

evet'e bakın, bu komut çalışır. Ama ne demek istedim? Bir sürü sed makalesini kontrol ettim, cevabı bulamadım. Çok teşekkür ederim! – missingcat92

+4

$ '$' ve 'i' olarak bölünmelidir. '$', son satır, 'i' geçerli satırın önüne ekleyeceğiniz anlamına gelir, bu yüzden '$ i', son satırdan önce eklemek anlamına gelir. – sigmalha

+0

Eğer ['\ 'tail -n1 /etc/rc.local \' "! =" Exit 0 "]; o zaman ... Birisi boş bir çizgi eklediyse. - Makine yeniden başlatıldığında hizmetin gerçekten yeniden başlatılmadığını birkaç hafta sonra fark etmek eğlenceli olmaz. – KajMagnus

1

En kolay, komut dosyası kullanan bir dil kullanmaktır (ör: python, perl, vb ...).

#!/usr/bin/env python 
import os 

with open('/etc/rc.local') as fin: 
    with open('/etc/rc.local.TMP') as fout: 
     while line in fin: 
      if line == 'exit 0': 
       fout.write('nohup sh /bocommjava/socket.sh &\n') 
      fout.write(line) 

# save original version (just in case) 
os.rename('/etc/rc.local', '/etc/rc.local.jic') 

os.rename('/etc/rc.loca.TMP', '/etc/rc.local') 
+0

Eh, bu iyi çalışıyor, ama yine de bir kabuk çözümü istiyorum. Çok teşekkürler! – missingcat92

+0

Temel kabukta biraz daha fazla kod var. Http://bash.cyberciti.biz/file-management/read-a-file-line-by-line/ – user590028