Você pode salvar a lista de usuários em um arquivo (user-sync.list neste exemplo). Para restaurar os scripts de usuário, você pode usar um loop for em um script bash que é executado pelo root na inicialização. Onde seu script de inicialização é chamado de sincronização do usuário:
#!/bin/sh
# /root/restore-user-sync.sh
for user in 'cat user-sync.list'; do start user-sync user=$user; done
Adicione isso ao crontab, como root:
$ crontab -e
No arquivo cron:
@reboot /root/restore-user-sync.sh
Manter a lista de usuários ativos é a parte mais envolvida. Você poderia ter o script python fazendo isso, ou você poderia fazê-lo como parte do script Upstart:
# /etc/init/user-sync.conf
start on runlevel [2345]
stop on runlevel [06]
normal exit 0
respawn
respawn limit 5 300
instance $user
chdir /home/talha/syncservice/
pre-start script
# if $user doesn't already exist in list, add $user to list
if ! grep $user user-sync.list; then echo $user >> user-sync.list; fi
end script
script
exec python sync.py $user
end script
pre-stop script
# remove line(s) from list that exactly match $user
sed -i "/\b$user\b/d" user-sync.list
end script
Você pode substituir $ USER (que é definido automaticamente como o nome de usuário atual) por $ user, caso contrário, ao chamar o script upstart, será necessário passar o nome de usuário como parâmetro:
sudo start user-sync user=myusername