Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] duvida sobre a pasta init.d

Boa noite, fiz os testes durante a aula utilizando o vsftpd e deu certo, porém processos como gedit e libreoffice eu não consegui fazer o mesmo.

Por que? estou meio perdido quanto a esta aula, o que realmente faz o init.d alem de iniciar automaticamente processos?

2 respostas
solução!

Booa tarde, Juliano, espero que esteja tudo bem por aí o/

Então, o init.d serve para controlar a inicialização dos serviços do sistema, por exemplo o serviço de SSH, X11, VSFTPD, Nginx e afins. O Gedit e o Libreoffice são aplicações que não são fundamentais para o sistema e nem oferecem serviços para o próprio sistema, portanto utilizam do sistema para servir ao usuário de forma exclusiva. Diferente do SSH que possibilita que dois sistemas conversem, do X11 que oferece ao sistema uma interface gráfica, do VSFTPD que oferece um mecanismo de trocar arquivos e do Nginx de oferecer um serviço web por exemplo.

Nesse sentido, é fundamental que possamos controlar quais serviços nosso sistema oferece, o X11 vai servir todas as aplicações gráficas e o Gedit utilizará o X11, o Libreoffice pode abrir um arquivo de um diretório remoto FTP e assim por diante.

Mas aprofundando um pouco mais, o init.d é um diretório no Linux que armazena apenas shell scripts que automatizam o controle de aplicações que servem ao sistema de alguma forma, por exemplo o cron. Provavelmente seu sistema deve ter o arquivo /etc/init.d/cron. Esse arquivo é um programa escrito em shell script do tipo bash, vamos abrir o arquivo para observar algumas coisas, no meu caso vou abrir com o vim:

vim /etc/init.d/cron

Vamos observar este trecho:

case "$1" in
start)	log_daemon_msg "Starting periodic command scheduler" "cron"
        start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
        log_end_msg $?
    ;;
stop)	log_daemon_msg "Stopping periodic command scheduler" "cron"
        killproc -p $PIDFILE $DAEMON
        RETVAL=$?
        [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
        log_end_msg $RETVAL
        ;;
restart) log_daemon_msg "Restarting periodic command scheduler" "cron" 
        $0 stop
        $0 start
        ;;
reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
    # cron reloads automatically
        log_end_msg 0
        ;;
status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
*)	log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
        exit 2
        ;;
esac

Este trecho do arquivo é o ponto alto do programa, onde podemos definir seu funcionamento de forma mais abstrata, pois todas as funções já estão criadas em algum lugar e tudo o que precisamos é criar estados que façam com o que o programa mude o seu comportamento. No caso, é utilizado o case que nos auxilia a especificar os casos de uso do programa. Caso o usuário utilize o start, as linhas que serão executadas estão definidas, tudo isso para controlar o daemon de execução do Cron no sistema.

Mas o que é um daemon?

É um serviço do sistema que é executado em segundo plano, sem que o usuário perceba sua existência, sendo responsável por executar tarefas muito importantes, como por exemplo o Cron, que é responsável por agendar tarefas. E o controlador de todos os daemons é o próprio init.d, abstraído durante anos pelo nosso querido comando service, hoje em vias de ser removido e substituido pelo systemctl.

O que são o comando service e systemctl?

Novamente, são apenas programas escritos em shell script do tipo Bash, podemos verificar sua localização com o comando:

sudo which service
sudo which systemctl

e também podemos abrir seu conteudo para verificar seu funcionamento:

sudo vim /usr/bin/systemctl
sudo vim /usr/sbin/service

Perceba que o controle do Linux é amplamente feito utilizando Bash, portanto se trata da linguagem de programação mais importante neste ambiente :D

Boa noite Lucas. Show de bola a explicação, mandou bem, muito obrigado mais uma vez.