Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Sistema / Recursos especiais do sistema
Aplica-se a SUSE Linux Enterprise Desktop 15 SP5

30 Recursos especiais do sistema

Este capítulo começa com informações sobre vários pacotes de software, os consoles virtuais e o layout do teclado. Falamos sobre os 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:

  1. /etc/profile

  2. ~/.profile

  3. /etc/bash.bashrc

  4. ~/.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 Pacote cron

Use o cron para executar comandos em segundo plano automaticamente em horários predefinidos. O cron usa tabelas de horários especialmente formatadas, e a ferramenta inclui várias tabelas 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. /etc/crontab atua como uma tabela cron para 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).

Exemplo 30.1: Entrada in /etc/crontab
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, que têm a execução controlada por /usr/lib/cron/run-crons. /usr/lib/cron/run-crons é executado a cada 15 minutos da 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.).

Exemplo 30.2: /etc/crontab: remover arquivos de marcação de horário
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.

Os trabalhos de manutenção diária de sistema são distribuídos a vários scripts por motivos de clareza. Eles estão contidos no pacote aaa_base. /etc/cron.daily contém, por exemplo, os componentes suse.de-backup-rpmdb, suse.de-clean-tmp ou suse.de-cron-local.

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, juntamente 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 o 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 dos recursos do sistema e fazer com que sejam exibidos. O ulimit é especialmente útil 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”.

Tabela 30.1: ulimit: definindo recursos para o usuário

-m

O tamanho máximo do conjunto residente

-v

A quantidade máxima de memória virtual disponível para o shell

-s

O tamanho máximo da pilha

-c

O tamanho máximo dos arquivos básicos criados

-a

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.

Exemplo 30.3: 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.

Importante
Importante: Suporte a 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 e 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. O slogan memória livre é memória 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 a 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 sobre 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 http://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. O .emacs, por sua vez, lê o arquivo /etc/skel/.gnu-emacs. Para personalizar o programa, copie o arquivo .gnu-emacs para o diretório pessoal (com cp /etc/skel/.gnu-emacs ~/.gnu-emacs) e faça as configurações desejadas nesse diretório.

.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 deste 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 complementares podem ser instalados se necessário: emacs-auctex (LaTeX), psgml (SGML e XML), gnuserv (operação 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 de Alt F1 até Alt F6. O sétimo console é reservado para X e o décimo console mostra as mensagens do kernel.

Para alternar para um console de X sem o fechar, use a combinação de teclas de CtrlAlt F1 até CtrlAlt F6. Para voltar para X, pressione AltF7.

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).

Dica
Dica: Mais informações

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 referem-se não somente ao suporte ao idioma nativo, mas também às categorias Mensagens (Idioma), Conjunto de Caracteres, Ordem de Classificação, Hora e Data, Números e Moeda. 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

Lista de variáveis
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 comando locale.

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 ou ctype (padrão). Se definida como yes, o root 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.

Nota
Nota: Comportamento dos arquivos de configuração mais antigos no SUSE Linux Enterprise Desktop

As versões anteriores do SUSE Linux Enterprise Desktop liam as configurações de idioma de /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 no /etc/sysconfig/language ainda serão usadas: elas anulam o idioma de todo o sistema e podem ser usadas para definir configurações de idioma diferentes para os 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 (consulte man 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-8

    Neste 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 http://www.evertype.com/standards/iso639/iso639-en.html e http://www.loc.gov/standards/iso639-2/. Os códigos de país estão listados em ISO 3166, consulte http://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

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 suportar UTF-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/etc/profile.d/lang.sh que, por sua vez, analisa /etc/sysconfig/language.

  • Para tcsh: No login, /etc/csh.login/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

Arquivos na categoria Mensagens são, via de regra, armazenados somente no diretório do idioma correspondente (como en) para ter um fallback. Se você definir LANG como en_US e o arquivo de mensagem em /usr/share/locale/en_US/LC_MESSAGES não existir, ele voltará 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, Capítulo Locales and Internationalization. Ele está incluído no pacote glibc-info.

  • Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, atualmente em https://www.cl.cam.ac.uk/~mgk25/unicode.html.