Eu sei que isso set -e
diz ao bash para sair do script em caso de erro. O problema é que eu tenho que resolver o erro, então deletar todos os passos anteriores do script enquanto mantenho todas as variáveis antes de executá-lo novamente para continuar. Existe uma maneira de fazer o script simplesmente esperar pela entrada do usuário read -p "Continue? "
em caso de erro? Se não, existe algo similar? Eu quero que o script pare em caso de erro, então continue novamente quando eu estiver pronto.
Mudei o prompt no meu .bashrc para mostrar o horário atual. Este era o prompt original (de uma instalação nova do MX Linux)
PS1="$PURPLE\u$nc@$CYAN\H$nc:$GREEN\w$nc\\n$GREEN\$$nc "
e eu mudei para isso
PS1="$PURPLE\u$nc@$CYAN\H$nc $YELLOW$(date '+%Y-%m-%d %H:%M:%S')$nc $REEN\w$nc\\n$GREEN\$$nc "
Quando abro um terminal, vejo a data e a hora atuais no prompt. Novos prompts não são exibidos com o horário em que foram gerados. Eles sempre mostram o mesmo horário do primeiro prompt. O que estou fazendo errado?
Estou trabalhando em um menu multinível e quero implementar a capacidade de submenus e sub-submenus retornarem ao menu anterior ou irem diretamente de volta ao menu principal. Veja abaixo...
[Menu]
1 - Option 1
2 - Option 2
3 - Quit (exit command)
Please choose option:
#Under Option 1
1 - Sub-Option 1
2 - Sub-Option 2
3 - back to main menu
#Under Sub-Option 1
1 - Sub-sub Option 1
2 - Sub-sub Option 2
3 - back to Sub-option menu
4 - back to main menu
Meu código atual mantém cada menu em uma função separada. Incluí meu menu Sub-Option abaixo...
suite_menu() {
show_suite_menu
read -p "Pick Number> " choice
case $choice in
1) echo "1 selected."
fullsuite_menu ;;
2) echo "2 selected."
fullsuite_menu ;;
3) echo "3 selected."
fullsuite_menu ;;
0) break;;
*) echo "Invalid choice, please try again";;
esac
}
Como eu poderia codificar meu sub-sub-menu de opções para ter a opção 3 indo para o menu acima, e a opção 0 indo para o menu principal? Obrigado antecipadamente <3
Para adicionar algo ao $PATH em fish, eu uso
fish_add_path -a ~/foo/bar
Então o peixe acrescenta ~/foo/bar
ao meu ~/.config/fish/fish_variables
:
SETUVAR fish_user_paths:/Users/john/foo/bar
Então, é correto dizer que para remover /Users/john/foo/bar
de $PATH, tenho duas opções:
para editar o
fish_variables
arquivopara usar a seguinte função:
// https://github.com/fish-shell/fish-shell/issues/8604#issuecomment-1169638533 function remove_path if set -l index (contains -i "$argv" $fish_user_paths) set -e fish_user_paths[$index] echo "Removed $argv from the path" end end
E a segunda parte da pergunta: Como usar corretamente essa função? Eu salvei como remove_from_path.fish
, executei como remove_from_path.fish "/Users/john/foo/bar"
, mas ela não parece remover /Users/john/foo/bar
de $PATH. O que estou fazendo errado?
Configurar
Suponha que estamos instalando uma versão atual do Debian (ou seja, Bookworm de 03/2025) em um PC moderno e "padrão", ou seja, alguma CPU moderna de arquitetura x86_64 onde nenhum módulo de kernel especial ou qualquer entrada especial do usuário é necessária durante a instalação (além da configuração regular de alto nível, como layouts de teclado, etc.). É a instalação mais básica e simples em um SSD, onde é o único sistema operacional instalado, em uma máquina que tem apenas este SSD como disco rígido.
Agora pegamos esse SSD e o movemos para um PC diferente, mesma simplicidade básica, mas possivelmente uma CPU diferente (por exemplo, um talvez tivesse um AMD e o outro um Intel, mas ambos x86_64) e possivelmente uma placa-mãe diferente (novamente, para efeito de argumentação, digamos que estamos trocando entre Intel e AMD). Talvez mais ou menos RAM ou uma placa de vídeo diferente (ou vídeo onboard). Provavelmente um chip de rede diferente, chip de áudio, controlador USB e o que mais vier com a placa-mãe. Mas tudo isso perfeitamente suportado pelo Debian com os módulos de kernel padrão. Ambas as máquinas funcionariam perfeitamente se o Debian fosse instalado do zero em qualquer uma delas e teriam capacidades comparáveis.
Além da instalação básica (com algum ambiente X, como Gnome ou KDE, nas configurações básicas padrão).
Pergunta
Alguém esperaria que para esta instalação tivéssemos movido do PC 1 para o PC 2 simplesmente movendo o SSD para funcionar perfeitamente desde a primeira inicialização? Ou algumas coisas, durante a instalação do Debian, são instaladas ou configuradas apenas conforme necessário para o hardware específico, então há uma chance significativa de que algo não funcione imediatamente no segundo PC?
Adenda
... se a resposta fosse "sim, algo provavelmente daria errado", há algo que possa ser feito após a instalação inicial no PC 1 para tornar mais provável que tal movimento funcione em um novo PC (sem saber exatamente qual PC seria)?
Estou tentando entender como o set
comando funciona no fish shell .
Por exemplo, para remover a mensagem de saudação, o manual do peixe sugere :
Para esvaziar o texto, com a função de saudação padrão:
set -U fish_greeting
ou
set -g fish_greeting
em config.fish.
Mas por que é sugerido usar set -g fish_greeting
in config.fish
em vez de just set fish_greeting
? Qual é o propósito prático de -g
aqui?
Reescrevi este parágrafo de abertura... tentando esconder meu desdém por systemd
. Vou me contentar em dizer que acho systemd
a "lógica" de desconcertante, e deixar por isso mesmo. Para chegar à pergunta:
Tenho tentado reduzir o tempo de inicialização relatado por systemd-analyze time
em um pequeno Raspberry Pi Zero 2W . O SO é cerca de 95% Debian com um pouco de Raspberry Pi para lidar com o hardware.
Comecei listando os arquivos de unidade ativos e, a partir dessa lista, cheguei a alguns service
que eu tinha certeza de que poderiam ser removidos sem impacto:
$ systemctl list-unit-files --state=enabled
...
rpi-display-backlight.service enabled enabled
rpi-eeprom-update.service enabled enabled
...
$
Eu escolhi disable
ambos os serviços da seguinte forma:
$ sudo systemctl disable rpi-eeprom-update.service rpi-display-backlight.service
Removed "/etc/systemd/system/halt.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/poweroff.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/reboot.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/multi-user.target.wants/rpi-eeprom-update.service".
Decepcionantemente, descobri que o tempo de inicialização (conforme relatado por systemd-analyze time
) na verdade aumentou em cerca de 3 segundos. Reiniciei algumas vezes para obter uma "média"; o aumento de 3 segundos parecia real e persistente. Fiquei pensando se esse aumento poderia ser devido a systemd
uma nova tentativa de iniciar esses serviços. E então procurei dependências com outras systemd
"unidades":
$ systemctl list-dependencies rpi-eeprom-update.service
rpi-eeprom-update.service
$ systemctl list-dependencies rpi-display-backlight.service
rpi-display-backlight.service
● └─system.slice
$
Tomei o primeiro resultado (rpi-eeprom) como uma indicação de que não havia outras dependências. O segundo resultado (rpi-display) é desconcertante para mim. Fiz um pouco de pesquisa .slice
desde então, mas ainda faz pouco (na verdade, nenhum) sentido para mim. O que me leva à minha pergunta:
Alguém pode explicar como editar isso system.slice
e remover o rpi-display-backlight.service
?
Comprei o X670E Pro RS recentemente e adicionei algumas memórias ECC a ele. Agora eu queria habilitar a limpeza de memória, no entanto, quando eu olho, /sys/devices/system/edac/mc/mc0/
ele sdram_scrub_rate
está faltando. Não consigo encontrar uma resposta sobre o porquê online. Mudei o ECC de automático para habilitado apenas para forçá-lo a ser habilitado. lsmod | fgrep edac
relatórios:
amd64_edac 69632 0
edac_mce_amd 40960 1 amd64_edac
O que está correto, sim(?).
Estou esquecendo de algum driver ou talvez eu tenha esquecido que o edac-utils é necessário.
sdram_scrub_rate
A questão é por que está faltando.
Resumindo , tenho um problema em que meu computador Ubuntu Desktop parece "hibernar" quando nenhum usuário está conectado, e eu adoraria evitar isso.
Mais detalhes -
Peço desculpas preventivamente se algo que eu escrever não estiver claro ou for redundante. Sou muito novo no Linux e no Ubuntu.
Para dizer o óbvio - o problema não é o meu monitor desligando, é que o computador parece adormecer depois de alguns minutos na tela de login do usuário sem nenhum usuário conectado. Os sintomas são:
- O computador parece visualmente desligado, acendendo somente quando o botão liga/desliga é pressionado novamente
- A tela está desligada
- Interagir com o teclado/mouse que estão conectados não faz nada
- (O verdadeiro problema) os servidores que o computador está executando estão offline
Isso contrasta com quando estou realmente logado no meu usuário. Nesse cenário, a tela pode desligar após X minutos, mas o computador nunca faz logout/entra no modo de suspensão (conforme a configuração em Settings
-> Power
-> Power Saving
).
Esta é uma instalação bem nova rodando o Ubuntu 24.04.2 LTS. Eu instalei o Ubuntu Desktop e mudei para o lightdm.
Obrigado antecipadamente! Ficarei feliz em compartilhar mais informações se for relevante.
Não consigo mais montar meu HDD. Depois da última vez que o usei, cliquei em " Remover com segurança " no meu navegador de arquivos, e agora não consigo mais ler dados nele.
Aqui estão alguns comandos de diagnóstico que executei:
# fdisk -l
Disk /dev/sdb: 465.73 GiB, 500074283008 bytes, 976707584 sectors
Disk model: Elements 10A8
Units: sectors of 1 × 512 = 512 bytes
Sector size (logical / physical): 512 bytes / 512 bytes
I/O size (minimum / optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf2c19c1e
Device Boot Start End Sectors Size Id Type
/dev/sdb1 256 976707583 976707328 465.7G 7 HPFS/NTFS/exFAT
# fsck.exfat /dev/sdb1
exfatprogs version : 1.2.2
too long label. 139
failed to read volume label
invalid start cluster of allocate bitmap. 0x34c04c90
failed to read bitmap
failed to verify root directory.
/dev/sdb1: clean. directories 1, files 0
# mount /dev/sdb1 /media/myself/Medias/
mount: /media/myself/Medias: can't read superblock at address /dev/sdb1.
dmesg(1) may have more information after failed mount system call.
Aqui estão as mensagens vistas dmesg
ao tentar o comando de montagem anterior:
[ 1439.474346] exFAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 1439.516358] exFAT-fs (sdb1): failed to read sector(0xd57a397000)
[ 1439.516365] exFAT-fs (sdb1): failed to load upcase table
[ 1439.516367] exFAT-fs (sdb1): failed to recognize exfat type
Estou testando o TestDisk para analisar/reparar meu HDD, mas como posso repará-lo?
Não tenho problemas para inicializar meu sistema. Esta pergunta é sobre como reparar uma unidade externa usada para armazenamento de dados.