シェルスクリプトで/etc/rc.d/rc.local
ファイルに行(たとえば、'*/data/mod/myservice start some_parameter*'
。)を追加します。 '*/data/mod/myservice start*'
で始まる行がある場合は、は新しいものでを置き換えます。シェルスクリプトでrc.localを変更するには?
私のスクリプトでは、次のpythonメソッドを実行します。
def excuteCmd(cmd):
import commands
output = commands.getoutput(cmd)
def setTask(cmd, installFlag):
print cmd, installFlag
excuteCmd('cat /etc/rc.d/rc.local > oldTask')
input = open('oldTask','r')
emptyFile = False
lines = input.readlines()
input.close()
taskNum = len(lines)
output = open('newTask', 'w')
if (taskNum == 0):
if (installFlag):
output.write(cmd + '\n')
else:
for i in range(taskNum):
if (lines[i].find(cmd) == -1):
output.write(lines[i])
if (installFlag):
output.write(cmd + '\n')
output.close()
excuteCmd('sudo cat newTask > /etc/rc.d/rc.local')
excuteCmd('rm -f oldTask')
excuteCmd('rm -f newTask')
ただし、sudo cat newTask > /etc/rc.d/rc.local
を実行すると、次のエラーが発生します。
-bash: /etc/rc.d/rc.local: Permission denied
また、私はそうだと思います。sudoコマンドは、>記号の前に実行されるものを指します。 jknuppはおそらくそれを知っているが、私はそれが彼の答えではっきりしていたとは思わなかった:) –
thx、それは解決されている! – zhouzuan2k