30 Recursos especiais do sistema #
Este capítulo começa com informações sobre pacotes de software específicos, os consoles virtuais e o layout do teclado. Abordamos componentes de software como bash
, cron
e logrotate
, porque eles foram mudados ou aperfeiçoados durante os últimos ciclos de lançamento. Mesmo que eles sejam pequenos ou considerados de menor importância, os usuários devem mudar o seu comportamento padrão, porque esses componentes muitas vezes estão estreitamente ligados ao sistema. O capítulo termina com uma seção sobre configurações específicas de país e idioma (I18N e L10N).
30.1 Informações sobre pacotes de software especiais #
O capítulo a seguir apresenta informações básicas sobre as seguintes ferramentas: bash
, cron
, logrotate
, locate
, ulimit
e free
.
30.1.1 O pacote bash
e /etc/profile
#
Bash é o shell de sistema padrão. Quando usado com um shell de login, ele lê vários arquivos de inicialização. O Bash os processa na ordem em que são exibidos na lista:
/etc/profile
~/.profile
/etc/bash.bashrc
~/.bashrc
Faça configurações personalizadas em ~/.profile
ou ~/.bashrc
. Para assegurar o processamento correto desses arquivos, é necessário copiar as configurações básicas de /etc/skel/.profile
ou /etc/skel/.bashrc
no diretório pessoal do usuário. É recomendável copiar as configurações de /etc/skel
após uma atualização. Execute os seguintes comandos de shell para evitar a perda de ajustes pessoais:
>
mv ~/.bashrc ~/.bashrc.old>
cp /etc/skel/.bashrc ~/.bashrc>
mv ~/.profile ~/.profile.old>
cp /etc/skel/.profile ~/.profile
Em seguida, copie os ajustes pessoais novamente dos arquivos *.old
.
30.1.2 O pacote cron #
Use o cron
para executar automaticamente os comandos no plano de fundo em horários predefinidos. O cron
usa tabelas de horários especialmente formatadas, e a ferramenta vem com várias que são padrão. Os usuários também podem especificar tabelas personalizadas, se necessário.
As tabelas cron estão localizadas em /var/spool/cron/tabs
. O /etc/crontab
serve como uma tabela cron de todo o sistema. Digite o nome de usuário para executar o comando diretamente após a tabela de tempo e antes do comando. No Exemplo 30.1, “Entrada in /etc/crontab”, root
foi inserido. Tabelas específicas de pacote, localizadas em /etc/cron.d
, têm o mesmo formato. Consulte a página de manual do cron
(man cron
).
1-59/5 * * * * root test -x /usr/sbin/atrun && /usr/sbin/atrun
Você não pode editar /etc/crontab
chamando o comando crontab -e
. Esse arquivo deve ser carregado diretamente em um editor, modificado e gravado.
Vários pacotes instalam scripts de shell nos diretórios /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
e /etc/cron.monthly
, com a execução controlada pelo /usr/lib/cron/run-crons
. O /usr/lib/cron/run-crons
é executado a cada 15 minutos com base na tabela principal (/etc/crontab
). Isso garante que os processos que tenham sido negligenciados possam ser executados no momento adequado.
Para executar hourly
, daily
ou outros scripts de manutenção periódica em horários personalizados, remova os arquivos de marcação de horário regularmente utilizando as entradas /etc/crontab
(consulte o Exemplo 30.2, “/etc/crontab: remover arquivos de marcação de horário”, que remove a opção hourly
antes de cada hora cheia, a opção daily
uma vez ao dia às 2:14 etc.).
59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly 14 2 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 2 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly 44 2 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
Se preferir, defina DAILY_TIME
em /etc/sysconfig/cron
como o horário de início de cron.daily
. A configuração de MAX_NOT_RUN
garante que as tarefas diárias sejam acionadas para execução, mesmo se o usuário não ligou o computador no DAILY_TIME
especificado por um período mais longo. O valor máximo de MAX_NOT_RUN
é 14 dias.
30.1.3 Parando mensagens de status do Cron #
Para evitar o excesso de e-mails causado pelas mensagens de status do Cron, o valor padrão de SEND_MAIL_ON_NO_ERROR
em /etc/sysconfig/cron
está definido como "no
" nas novas instalações. Mesmo com essa configuração definida como "no
", a saída de dados do Cron ainda será enviada para o endereço MAILTO
, conforme documentado na página de manual do Cron.
Em caso de atualização, é recomendado definir esses valores de acordo com as suas necessidades.
30.1.4 Arquivos de registro: pacote logrotate #
Há vários serviços de sistema (daemons) que, junto com o próprio kernel, gravam regularmente o status do sistema e eventos específicos em arquivos de registro. Dessa maneira, o administrador pode verificar regularmente o status do sistema em um determinado momento, reconhecer erros ou funções defeituosas e solucioná-los com total precisão. Normalmente, esses arquivos de registro são armazenados em /var/log
, como especificado pelo FHS, e crescem diariamente. O pacote logrotate
ajuda a controlar o crescimento desses arquivos. Para obter mais detalhes, consulte Section 3.3, “Managing log files with logrotate
”.
30.1.5 O comando locate
#
locate
, um comando para localização rápida de arquivos, não está incluído no escopo padrão do software instalado. Se desejado, instale o pacote mlocate
, o sucessor do pacote findutils-locate
. O processo updatedb
é iniciado automaticamente todas as noites ou aproximadamente 15 minutos após a inicialização do sistema.
30.1.6 O comando ulimit
#
Com o comando ulimit
(limites do usuário), é possível definir limites para o uso de recursos do sistema e fazer com que sejam exibidos. O ulimit
é útil principalmente para limitar a memória disponível para os aplicativos. Com isso, um aplicativo pode ser impedido de absorver recursos em demasia do sistema e deixar o sistema operacional lento ou até travá-lo.
O comando ulimit
pode ser usado com várias opções. Para limitar o uso da memória, use as opções listadas na Tabela 30.1, “ulimit
: Definindo recursos para o usuário”.
ulimit
: Definindo recursos para o usuário #
|
O tamanho máximo do conjunto residente |
|
A quantidade máxima de memória virtual disponível para o shell |
|
O tamanho máximo da pilha |
|
O tamanho máximo dos arquivos básicos criados |
|
Todos os limites atuais são informados |
As entradas padrão de todo o sistema estão definidas em /etc/profile
. Não é recomendado editar esse arquivo diretamente, pois as mudanças serão sobregravadas durante os upgrades do sistema. Para personalizar as configurações de perfil de todo o sistema, use /etc/profile.local
. Convém efetuar as configurações por usuário em ~USER/.profile
.
ulimit
: Configurações em ~/.bashrc
## Limits maximum resident set size (physical memory): ulimit -m 98304 # Limits of virtual memory: ulimit -v 98304
As alocações de memória devem ser especificadas em KB. Para obter informações mais detalhadas, consulte o man bash
.
ulimit
Nem todos os shells suportam as diretivas ulimit
O PAM (por exemplo, pam_limits
) oferece uma infinidade de possibilidades de ajustes como alternativa ao ulimit
.
30.1.7 O comando free
#
O comando free
exibe a quantidade total de memória física livre e utilizada, o espaço de troca (swap) no sistema e os buffers e o cache consumidos pelo kernel. O conceito de RAM disponível surgiu antes da época do gerenciamento unificado de memória. A ideia de que a memória livre é ruim se aplica bem ao Linux. Como resultado, o Linux sempre se esforçou para equilibrar os caches sem permitir memória livre ou sem uso.
O kernel não tem conhecimento direto de nenhum aplicativo ou dados de usuário. Em vez disso, ele gerencia aplicativos e dados de usuário em um cache de página. Se a memória diminuir, partes dele serão gravadas na partição de troca ou em arquivos, dos quais poderão ser lidas inicialmente com o comando mmap
(consulte man mmap
).
O kernel também contém outros caches, como o cache slab, onde os caches usados para acesso à rede são armazenados. Isso pode explicar as diferenças entre os contadores em /proc/meminfo
. A maioria deles (mas não todos) pode ser acessada via /proc/slabinfo
.
No entanto, se o seu objetivo for descobrir quanta RAM está em uso, encontre essa informação em /proc/meminfo
.
30.1.8 Páginas de manual e de informações #
Para alguns aplicativos GNU (como o tar), as páginas de manuais não são mais mantidas. Para esses comandos, use a opção --help
para obter uma visão geral rápida das páginas de informações, que apresentam instruções mais detalhadas. Info é um sistema de hipertexto do GNU. Leia uma introdução a esse sistema digitando info
info
. As páginas de informações podem ser exibidas com o Emacs digitando emacs
-f info
ou diretamente em um console, com info
. Também é possível usar tkinfo, xinfo ou o sistema de ajuda do para exibir as páginas de informações.
30.1.9 Selecionando páginas de manual usando o comando man
#
Para ler uma página de manual, digite man
MAN_PAGE. Se existir uma página de manual com o mesmo nome em seções diferentes, elas serão listadas com os números da seção correspondentes. Selecione uma para exibir. Se você não digitar um número de seção em alguns segundos, a primeira página de manual será exibida.
Para mudar desse comportamento para o padrão do sistema, defina MAN_POSIXLY_CORRECT=1
em um arquivo de inicialização de shell, como ~/.bashrc
.
30.1.10 Configurações para GNU Emacs #
O GNU Emacs é um complexo ambiente de trabalho. As seções a seguir descrevem os arquivos de configuração processados quando o GNU Emacs é iniciado. Há mais informações em https://www.gnu.org/software/emacs/.
Na inicialização, o Emacs lê vários arquivos que contêm as configurações do usuário, administrador do sistema e distribuidor para personalização ou pré-configuração. O arquivo de inicialização ~/.emacs
é instalado nos diretórios pessoais dos usuários individuais por meio de /etc/skel
. Por sua vez, o .emacs
lê o arquivo /etc/skel/.gnu-emacs
. Para personalizar o programa, copie .gnu-emacs
para o diretório pessoal (com cp
/etc/skel/.gnu-emacs ~/.gnu-emacs
) e faça as configurações desejadas nesse local.
.gnu-emacs
define o arquivo ~/.gnu-emacs-custom
como custom-file
. Se os usuários tiverem feito as configurações com as opções customize
no Emacs, as configurações serão gravadas no arquivo ~/.gnu-emacs-custom
.
Com o SUSE Linux Enterprise Desktop, o pacote emacs
instala o arquivo site-start.el
no diretório /usr/share/emacs/site-lisp
. O arquivo site-start.el
é carregado antes do arquivo de inicialização ~/.emacs
. Entre outras coisas, o arquivo site-start.el
assegura que os arquivos de configuração especial distribuídos com os pacotes de expansão do Emacs, como o psgml
, sejam carregados automaticamente. Os arquivos de configuração desse tipo também estão localizados em /usr/share/emacs/site-lisp
e sempre começam com suse-start-
. O administrador do sistema local pode especificar configurações globais do sistema no arquivo default.el
.
Mais informações sobre esses arquivos estão disponíveis no arquivo de informações do Emacs em Init File: info:/emacs/InitFile
. Informações sobre como desabilitar o carregamento desses arquivos, se necessário, também são fornecidas neste local.
Os componentes do Emacs são divididos em vários pacotes:
O pacote base
emacs
.emacs-x11
(geralmente instalado): o programa com suporte para X11.emacs-nox
: o programa sem suporte para X11.emacs-info
: documentação online em formato info.emacs-el
: os arquivos de biblioteca não compilados em Emacs Lisp. Eles não são necessários em tempo de execução.Numerosos pacotes de expansão podem ser instalados, se houver necessidade:
emacs-auctex
(LaTeX),psgml
(SGML e XML),gnuserv
(operação de cliente e servidor) e outros.
30.2 Consoles virtuais #
O Linux é um sistema multiusuário e multitarefa. As vantagens desses recursos podem ser apreciadas mesmo em um sistema de PC independente. No modo de texto, existem seis consoles virtuais disponíveis. Alterne entre eles utilizando as teclas Alt–F1 a Alt–F6. O sétimo console é reservado para X e o décimo console mostra as mensagens do kernel.
Para alternar para um console do X sem o fechar, use as teclas Ctrl–Alt–F1 a Ctrl–Alt–F6. Para voltar ao X, pressione Alt–F7.
30.3 Mapeamento de teclado #
Para padronizar o mapeamento de teclado de programas, foram feitas mudanças nos seguintes arquivos:
/etc/inputrc /etc/X11/Xmodmap /etc/skel/.emacs /etc/skel/.gnu-emacs /etc/skel/.vimrc /etc/csh.cshrc /etc/termcap /usr/share/terminfo/x/xterm /usr/share/X11/app-defaults/XTerm /usr/share/emacs/VERSION/site-lisp/term/*.el
Essas mudanças afetam apenas os aplicativos que usam as entradas terminfo
ou que têm arquivos de configuração que são modificados diretamente (vi
, emacs
etc). Os aplicativos que não acompanham o sistema devem ser adaptados a esses padrões.
Em X, a tecla Compose (multitecla) pode ser habilitada conforme explicado em /etc/X11/Xmodmap
.
Outras configurações são possíveis utilizando-se a Extensão de Teclado X (XKB).
Há informações sobre o XKB disponíveis nos documentos listados em /usr/share/doc/packages/xkeyboard-config
(parte do pacote xkeyboard-config
).
30.4 Configurações de idioma e específicas de país #
O sistema é, em uma extensão bastante ampla, internacionalizado e pode ser modificado de acordo com as necessidades locais. A internacionalização (I18N) permite a localização específica (L10N). As abreviações I18N e L10N são derivadas das primeiras e últimas letras das palavras e, no meio, está o número de letras omitidas.
As configurações são feitas com variáveis LC_
definidas no arquivo /etc/sysconfig/language
. Elas se referem não somente ao suporte ao idioma nativo, mas também às categorias Mensagens (Idioma), Conjunto de Caracteres, Ordem de Classificação, Data e hora, Números e Dinheiro. Cada uma dessas categorias pode ser definida diretamente com sua própria variável ou indiretamente com uma variável master no arquivo language
(consulte a página de manual locale
RC_LC_MESSAGES
,RC_LC_CTYPE
,RC_LC_COLLATE
,RC_LC_TIME
,RC_LC_NUMERIC
,RC_LC_MONETARY
Essas variáveis são passadas para o shell sem o prefixo
RC_
e representam as categorias listadas. Os perfis shell de referência estão listados abaixo. A configuração atual pode ser exibida com o comandolocale
.RC_LC_ALL
Essa variável, se definida, sobregrava os valores das variáveis já mencionadas.
RC_LANG
Se nenhuma das variáveis anteriores for definida, esse é o fallback. Por padrão, apenas
RC_LANG
está definida. Isso facilita o processo para que os usuários informem seus próprios valores.ROOT_USES_LANG
É possível definir essa variável como
yes
ouctype
(padrão). Se definida comoyes
, oroot
usará as configurações específicas de idioma e país; do contrário, o administrador do sistema sempre trabalhará em um ambiente POSIX.
As variáveis podem ser definidas com o editor sysconfig do YaST. O valor dessa variável contém o código do idioma, código do país, codificação e modificador. Os componentes individuais são unidos por caracteres especiais:
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
30.4.1 Configurações de idioma de todo o sistema #
O systemd
lê o /etc/locale.conf
no início do boot. As configurações de idioma definidas nesse arquivo são herdadas por cada serviço ou usuário, a menos que haja configurações individuais.
As versões anteriores do SUSE Linux Enterprise Desktop leem as configurações de idioma em /etc/sysconfig/language
, /etc/sysconfig/keyboard
e /etc/sysconfig/console
. A partir do SUSE Linux Enterprise Desktop 15 GA, esses arquivos são considerados obsoletos. O systemd
não lê mais as configurações desses arquivos. Em vez disso, o systemd
lê de /etc/locale.conf
.
No entanto, as variáveis definidas em /etc/sysconfig/language
ainda serão usadas: Elas substituem o idioma de todo o sistema e podem ser usadas para definir configurações de idioma diferentes para shells de usuário (consulte a Seção 30.4.2, “Alguns exemplos”).
Para definir o idioma de todo o sistema, você pode:
Gravar as configurações no
/etc/locale.conf
. Cada linha é uma atribuição de variável como um ambiente (consulteman 5 locale.conf
para ver uma lista de variáveis):LANG=de_DE.UTF-8
Para ajustar as configurações, você pode adicionar outras variáveis, uma por linha.
Usar o comando
localectl
:#
localectl
set-locale LANG=de_DE.UTF-8Neste caso, você também pode especificar mais variáveis após o comando
localectl set-locale
.
Para manter a compatibilidade retroativa com sistemas antigos durante a atualização do pacote systemd, todas as variáveis mencionadas serão migradas do sysconfig para seus destinos finais, se ainda não estiverem definidas nesse local.
30.4.2 Alguns exemplos #
Você deve sempre definir os códigos do idioma e do país juntos. As configurações do idioma seguem o padrão ISO 639 disponível em https://www.evertype.com/standards/iso639/iso639-en.html e https://www.loc.gov/standards/iso639-2/. Os códigos de país estão listados em ISO 3166. Consulte https://en.wikipedia.org/wiki/ISO_3166.
Só faz sentido definir valores para os quais os arquivos de descrição utilizáveis podem ser encontrados em /usr/lib/locale
. Arquivos de descrição adicionais podem ser criados de arquivos em /usr/share/i18n
utilizando o comando localedef
. Os arquivos de descrição fazem parte do pacote glibc-i18ndata
. Um arquivo de descrição para en_US.UTF-8
(para inglês e Estados Unidos) pode ser criado com:
localedef -i en_US -f UTF-8 en_US.UTF-8
-
LANG=en_US.UTF-8
Essa é a configuração padrão se Inglês americano for selecionado durante a instalação. Se você tiver selecionado outro idioma, ele será habilitado, mas ainda terá o UTF-8 como codificação de caractere.
-
LANG=en_US.ISO-8859-1
Isso define o idioma como inglês, o país como Estados Unidos e o conjunto de caracteres como
ISO-8859-1
. Essa definição de caractere não suporta o sinal de Euro, mas às vezes pode ser útil para programas que não foram atualizados para suportarUTF-8
. A string que define o conjunto de caracteres (ISO-8859-1
nesse caso) é então avaliada por programas como o Emacs.LANG=en_IE@euro
O exemplo acima inclui explicitamente o sinal de Euro em uma configuração de idioma. Essa configuração está obsoleta agora, pois o UTF-8 também abrange o símbolo do Euro. Será útil apenas se um aplicativo suportar ISO-8859-15 e não UTF-8.
As mudanças em /etc/sysconfig/language
são ativadas pela seguinte cadeia de processo:
Para Bash:
/etc/profile
lê/etc/profile.d/lang.sh
que, por sua vez, analisa/etc/sysconfig/language
.Para tcsh: No login,
/etc/csh.login
lê/etc/profile.d/lang.csh
que, por sua vez, analisa/etc/sysconfig/language
.
Isso garante que toda mudança em /etc/sysconfig/language
fique disponível no próximo login para o respectivo shell, sem ter que ativá-la manualmente.
Os usuários anular os padrões do sistema editando o ~/.bashrc
da maneira adequada. Por exemplo, se você não deseja usar en_US
em todo o sistema para mensagens de programa, em vez disso, inclua LC_MESSAGES=es_ES
para exibir as mensagens em espanhol.
30.4.3 Configurações de idioma em ~/.i18n
#
Se não estiver satisfeito com os padrões de idioma do sistema, mude as configurações em ~/.i18n
de acordo com a sintaxe de script Bash. As entradas em ~/.i18n
anulam os padrões do sistema de /etc/sysconfig/language
. Use os mesmos nomes de variáveis, mas sem os prefixos de namespace RC_
. Por exemplo, use LANG
em vez de RC_LANG
:
LANG=cs_CZ.UTF-8 LC_COLLATE=C
30.4.4 Configurações de suporte de idioma #
Os arquivos na categoria Mensagens são, via de regra, armazenados apenas no diretório do idioma correspondente (como en
) para ter um fallback. Se você definir LANG
como en_US
, e o arquivo de mensagens em /usr/share/locale/en_US/LC_MESSAGES
não existir, será feito o fallback para /usr/share/locale/en/LC_MESSAGES
.
Uma cadeia de fallback também pode ser definida, por exemplo, para bretão para francês ou galego para espanhol para português:
LANGUAGE="br_FR:fr_FR"
LANGUAGE="gl_ES:es_ES:pt_PT"
Se desejar, use as variantes norueguesas Nynorsk e Bokmål (com fallback adicional para no
):
LANG="nn_NO"
LANGUAGE="nn_NO:nb_NO:no"
ou
LANG="nb_NO"
LANGUAGE="nb_NO:nn_NO:no"
Em norueguês, LC_TIME
também é tratado de maneira diferente.
Um problema que pode surgir é um separador usado para delimitar grupos de dígitos não ser reconhecido corretamente. Isso acontecerá se LANG
for definido para um código de idioma com somente duas letras, como de
, mas o arquivo de definição que o glibc utiliza estiver localizado em /usr/share/lib/de_DE/LC_NUMERIC
. Por isso, LC_NUMERIC
deve ser definido como de_DE
para tornar a definição de separador visível para o sistema.
30.4.5 Mais informações #
The GNU C Library Reference Manual (Manual de Referência da Biblioteca GNU C), Capítulo “Locales and Internationalization” (Idiomas e internacionalização). Ele está incluído no pacote glibc-info.
Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux (Perguntas frequentes sobre UTF-8 e Unicode para Unix/Linux), atualmente em https://www.cl.cam.ac.uk/~mgk25/unicode.html.