Tecnicamente, não há como tornar um processo inviável.
Obviamente, para usuários não raiz, eles podem matar apenas processos com o mesmo ID de usuário, portanto, se você puder criar contas diferentes, poderá usar um ID de usuário "exclusivo" para o processo e somente o root poderá matá-lo.
Uma solução simples, mas menos robusta, é fazer com que seu processo capte o máximo de sinais possível (talvez ignorando-os). Isso é adequado apenas para exemplos de brinquedos ou ambientes não adversários, pois não há como capturar o sinal KILL (sinal 9), mas, caso contrário, você pode evitar ser morto por eles.
Finalmente, você pode fazer com que seu processo reapareça se for morto. Isso também é frágil (muito frágil), mas tornará um pouco mais difícil a eliminação. Isso pode ser feito usando um processo de monitor próprio ou usando o inittab. Para um adversário que sabe o que está fazendo, isso pode ser facilmente contornado, matando vários processos ao mesmo tempo.