Você está fazendo 3 coisas erradas que eu vejo.
Primeiro: você deseja colocar seu link /etc/rcS.d/virtual para que ele seja executado quando a máquina entrar no modo "usuário único" (sem rede disponível) e /etc/rc[2-5].d/para que ele seja executado quando a máquina entrar no modo "multiusuário" (níveis de execução 2 a 5) . O nível de execução 0 /etc/rc0.d/é inserido apenas quando a máquina é instruída a desligar. O nível de execução 6 é usado para "Reinicializar". Consulte a página da Wikipedia para níveis de execução UNIX
Segundo: o nome do link não pode ser collection.sh. Ele precisa estar no formato em S09collectionque "S" significa Iniciar e "09" significa Iniciar após todos os 08 scripts terem sido iniciados . Veja aqui para mais detalhes.
Terceiro: init é usado para iniciar os serviços daemon e não deve ser usado para executar o collection.sh diretamente. Você precisa criar um script init real que lide com o início e a parada do daemon collection.sh. Estude os scripts init pré-existentes /etc/init.d/para ter uma ideia de como eles funcionam. Como alternativa, consulte os links a seguir para obter mais documentação sobre como escrever scripts init.
- Aqui está um tutorial sobre como escrever scripts init compatíveis com LSB. Isso é recomendado para distribuições Linux compatíveis com LSB. Notei que você marcou sua pergunta com "ubuntu", então devo mencionar que o Ubuntu (como todas as distribuições baseadas no Debian) é compatível com LSB.
- Aqui está o guia wiki do Debian sobre como tornar os scripts init compatíveis com LSB.
- Aqui está um "Quick and Dirty" como nos scripts de inicialização do estilo System V.
- Aqui está um modelo para um script init do estilo System V no Github.
Além disso, você não precisa criar os links simbólicos diretamente nas /etc/rc?.dpastas. Todas as principais distribuições possuem ferramentas automatizadas para isso. Veja este artigo para mais detalhes.
collection.shdeveria estar fazendo ou o que você espera que esteja falhando, é quase impossível responder como está.