Como os colegas disseram... isso é feito pelo cron (mesmo que configurado por outros aplicativos, como o fcron ou o gnome-schedule).
Só esteja atento pra algumas armadilhas:
1. você não pode se basear em nenhuma variável de ambiente pra rodar seu programa, pois o cron te dá o ambiente totalmente limpo.
2. O PATH é ajustado pro valor mínimo "/bin:/usr/bin". Assim, programas que não fiquem nesses diretórios devem ser chamados com caminho completo (p.ex. "/usr/sbin/iptables" em vez de só "iptables").