Comment exécuter nohup et écrire son fichier pid en une seule instruction bash

Je veux exécuter mon script en arrière-plan, puis écrire son fichier pid. J’utilise nohup pour le faire.

C’est ce que j’ai imaginé,

nohup ./myprogram.sh > /dev/null 2>&1 & && echo $! > run.pid 

Mais cela donne une erreur de syntaxe.

Ce qui suit ne donne pas d’erreur de syntaxe mais le problème est echo $! n’écrit pas le bon pid puisque nohup est exécuté dans un sous-shell

 (nohup ./myprogram.sh > /dev/null 2>&1 &) && echo $! > run.pid 

Des solutions pour cela, étant donné que je veux un seul énoncé de ligne pour y parvenir?

Vous avez déjà une esperluette après la redirection qui met votre script en arrière-plan. Par conséquent, il vous suffit de taper la commande souhaitée après cette esperluette, sans préfixer autre chose:

 nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid 

Cela devrait fonctionner:

 nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid