Renomeie dentro do arquivo crontab

2

Eu queria renomear o nome do arquivo, colocando mais detalhes para que eu pudesse obter minha resposta para a minha pergunta:

Eu tenho as linhas abaixo em crontab

00 * * * * /home/@@@@/ulimit_nofile_status_20480.sh >> /export/####/$$$$$/ulimit_nofile_status.txt

00 * * * * /home/@@@@/ulimit_nproc_status_20480.sh >> /export/####/%%%%/ulimit_nproc_status.txt

Desejo alterar os nomes dos arquivos ulimit_nofile_status_20480.sh e ulimit_nproc_status_20480.sh para ulimit_nofile_status_40960.sh e ulimit_nproc_status_40960.sh , respectivamente.

Então, em outras palavras, quero renomear 20480 para 40960

Eu tentei comandos abaixo, mas eles não funcionaram para mim.

crontab -l | sed 's#/_20480\.#/40960.#' | crontab -
crontab -l | sed 's/\<_20480\>/40960/' | crontab -
"sed -i s//40960/" crontab -e
    
por Gerald Johnson 01.03.2018 / 21:54

1 resposta

1

Suas expressões regulares são loucas. O seguinte deve funcionar.

crontab -l | sed 's#_20480\.#_40960.#' | crontab -

Sua tentativa exigiu que houvesse uma barra antes do sublinhado, mas é claro que não há nenhuma em seu arquivo crontab , então o regex não correspondia a nada.

Você diz que deseja substituir 20480 por 40960 , mas várias de suas tentativas parecem querer também remover o sublinhado antes do número. Se isso estiver correto, obviamente, elimine-o da string de substituição.

Eu especulo que seu sed não reconhece \< que, de outra forma, teria sido uma boa tentativa.

A última das suas tentativas está tão distante de qualquer sintaxe válida que eu não acho que eu possa comentá-la de forma significativa. Ele analisa a tentativa de usar a string sed -i s//40960/ como o nome de um comando, com os argumentos crontab e -l passados como parâmetros.

    
por 02.03.2018 / 21:09