Aplica-se a SUSE Linux Enterprise Desktop 12

15 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. 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, talvez os usuários desejem mudar o seu comportamento padrão, porque esses componentes muitas vezes estão intimamente ligados ao sistema. O capítulo termina com uma seção sobre configurações específicas de país e idioma (I18N e L10N).

15.1 Informações sobre pacotes de software especiais

Os programas bash, cron, logrotate, locate, ulimit e free são muito importantes para os administradores de sistema e para muitos usuários. As páginas de manual e de informações são duas fontes úteis de informações sobre comandos, mas as duas nem sempre estão disponíveis. O GNU Emacs é um editor de texto popular e muito configurável.

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

15.1.2 O pacote cron

Se você deseja executar comandos de maneira regular e automática em segundo plano em horários predefinidos, cron é a ferramenta a ser usada. O cron é orientado por tabelas de horários especialmente formatadas. Alguns deles vêm com o sistema e os usuários poderão criar suas próprias tabelas, 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 15.1, “Entrada in /etc/crontab”, root foi inserido. Tabelas específicas de pacote, localizadas em /etc/cron.d, possuem o mesmo formato. Consulte a página de manual do cron (man cron).

Exemplo 15.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.

Alguns pacotes instalam scripts de shell nos diretórios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly, cuja 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 os scripts de manutenção por hora, por dia 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 15.2, “/etc/crontab: remova arquivos de marcação de horário”, que remove a opção por hora antes de cada hora cheia, a opção por dia uma vez ao dia às 2:14, etc.).

Exemplo 15.2 /etc/crontab: remova 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 assegura 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.

15.1.3 Parando mensagens de status do Cron

Para evitar a inundação de e-mails causada 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.

15.1.4 Arquivos de registro: pacote logrotate

Existem 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. Esses arquivos de registro são normalmente armazenados em /var/log, como especificado pelo FHS, e crescem diariamente. O pacote logrotate ajuda a controlar o crescimento desses arquivos.

Configure o logrotate com o arquivo /etc/logrotate.conf. Em particular, a especificaçãoinclude configura principalmente os arquivos adicionais a serem lidos. Programas que produzem arquivos de registro instalam arquivos de configuração individuais em /etc/logrotate.d. Por exemplo, esses arquivos vêm com os pacotes apache2 (/etc/logrotate.d/apache2) e syslog-service (/etc/logrotate.d/syslog).

Exemplo 15.3 Exemplo para /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp - we'll rotate them here
#/var/log/wtmp {
#    monthly
#    create 0664 root utmp
#    rotate 1
#}

# system-specific logs may be also be configured here.

logrotate é controlado pelo cron e é chamado diariamente por /etc/cron.daily/logrotate.

Importante
Importante: Permissões

A opção create lê todas as configurações feitas pelo administrador em /etc/permissions*. Certifique-se de que não haja conflitos devido a modificações pessoais.

15.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 a cada noite ou aproximadamente 15 minutos após a inicialização do sistema.

15.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 15.1, “ulimit: definindo recursos para o usuário”.

Tabela 15.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 ~USUÁRIO/.bashrc.

Exemplo 15.4 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 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.

15.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 no sistema, além dos buffers e do 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 caches externos sem realmente 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 são gravadas na partição de troca ou em arquivos, dos quais podem ser lidas inicialmente com a ajuda do 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.

15.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 breve visão geral das páginas de informações, que fornecem instruções mais detalhadas. O info é um sistema de hipertexto do GNU. Leia uma introdução sobre esse sistema digitando infoinfo. As páginas de informações podem ser exibidas com 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.

15.1.9 Selecionando páginas de manual usando o comando man

Para ler a página de manual, digite man página_de_manual. 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.

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

O .gnu-emacs define o arquivo ~/.gnu-emacs-custom como arquivo personalizado. Se os usuários tiverem feito as configurações com as opções personalizar 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 o nome 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.

15.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 AltF1 até AltF6. 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.

15.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). Essa extensão também é usada pelos ambientes de área de trabalho do GNOME (gswitchit).

Dica
Dica: para obter 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).

15.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 localizações específicas (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 local).

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

Uma variável yes ou no. Se for definida como no, root sempre funcionará no 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 conectados por caracteres especiais:

  LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]

15.4.1 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 seu ~/.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.

15.4.2 Configurações locais em ~/.i18n

Se não estiver satisfeito com os padrões do sistema local, mude as configurações em ~/.i18n de acordo com a sintaxe de script Bash. As entradas em ~/.i18n substituem 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

15.4.3 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 para 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"

Observe que 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 acontece 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.

15.4.4 Para obter mais informações

  • The GNU C Library Reference Manual, Capítulo Locales and Internationalization. Ele está incluído em glibc-info. O pacote está disponível no SDK do SUSE Linux Enterprise. O SDK é um produto complementar do SUSE Linux Enterprise e está disponível para download pelo site http://download.suse.com/. Pesquise por SUSE Linux Enterprise Software Development Kit.

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

  • Unicode-HOWTO por Bruno Haible, disponível em http://tldp.org/HOWTO/Unicode-HOWTO-1.html.

Imprimir esta página