AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / 问题

All perguntas(unix)

Martin Hope
Alan Mick
Asked: 2025-04-20 11:03:32 +0800 CST

Meu diretório inicial do Ubuntu Linux é /home/ls. Por que é "ls" e não meu nome de usuário?

  • 12

Instalei o Ubuntu Linux com WSL no meu PC com Windows 11. Criei um nome de usuário durante a instalação, perdiem. Quando tudo estava funcionando, fui cdpara ~, e o diretório em que acabei foi /home/ls. Não sei bem por que isso acontece; pensei que seria meu nome de usuário. Também é estranho que seja, na verdade, um comando do Linux — meio confuso.

Isso não é um problema, mas alguém sabe por que lsé estabelecido como o diretório inicial e não meu nome de usuário?


Saída de id:

uid=1000(ls) gid=1000(ls) groups=1000(ls),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),107(netdev)

Saída de grep /home/ls /etc/passwd:

ls:x:1000:1000:,,,:/home/ls:/bin/bash
linux
  • 2 respostas
  • 1124 Views
Martin Hope
Mike
Asked: 2025-03-04 00:16:26 +0800 CST

Por que /bin/echo causa SIGPIPE, enquanto o echo integrado do Bash não?

  • 12

Estou no Bash, no Linux Mint. Se eu executar

{ echo 1 || >&2 echo "[ $? ]" ; } | echo

uma linha vazia é impressa. Observe que o Bash interpreta echocomo um built-in. Mas se eu executar

{ /bin/echo 1 || >&2 echo "[ $? ]" ; } | /bin/echo

ele produz


[ 141 ]

Por man bashsabermos que 141 significa que recebeu o sinal 13, e por man 7 signalisso significa que houve um sinal SIGPIPE gerado. Em man 7 pipelemos que

[i]se todos os descritores de arquivo referentes à extremidade de leitura de um pipe tiverem sido fechados, então a write(2)fará com que um sinal SIGPIPE seja gerado para o processo de chamada.

Então concluo que no segundo caso "todos os descritores de arquivo que se referem ao fim de leitura de um pipe foram fechados", seja lá o que isso deva significar para o /bin/echo. Mas por que a saída é diferente no caso do Bash echo?

bash
  • 1 respostas
  • 702 Views
Martin Hope
balupton
Asked: 2025-02-12 04:17:31 +0800 CST

Por que o MacOS sempre anexa a um descritor de arquivo redirecionado mesmo quando é instruído a sobrescrever? O Ubuntu só anexa quando é instruído a anexar estritamente

  • 12

Dado o seguinte código:

out="$(mktemp)"
rm -f "$out"
clear

printf '%s\n' 0 >"$out"
{
    printf '%s\n' '1' >/dev/stdout
    printf '%s\n' '2' >/dev/stdout
} >"$out"
cat -e -- "$out"
rm -f "$out"

No Ubuntu isso produz:

2$

No MacOS isso gera:

1$
2$

Ao anexar explicitamente, eles se comportam de forma consistente:

out="$(mktemp)"
rm -f "$out"
clear

printf '%s\n' 0 >"$out"
{
    printf '%s\n' '1' >/dev/stdout
    printf '%s\n' '2' >>/dev/stdout
} >"$out"
cat -e -- "$out"
rm -f "$out"

No MacOS e no Ubuntu isso gera:

1$
2$

O exemplo mais confuso para mim é este:

out="$(mktemp)"
rm -f "$out"
clear

printf '%s\n' 0 >"$out"
exec 3>>"$out"
{
    printf '%s\n' '1' >/dev/stdout
    printf '%s\n' '2' >/dev/stdout
} >&3
{
    printf '%s\n' '3' >/dev/stdout
    printf '%s\n' '4' >/dev/stdout
} >&3
cat -e -- "$out"
rm -f "$out"
exec 3>&-

Que no MacOS gera:

0$
1$
2$
3$
4$

Que no Ubuntu gera:

4$

Eu esperava isso no Ubuntu:

0$
2$
4$

Estou completamente confuso sobre o porquê desse comportamento ocorrer neste exemplo e em todos os outros exemplos que criei para ilustrar essa discrepância.

Minhas perguntas:

  • O que é essa discrepância? O que está acontecendo? Essa discrepância é intencional?
  • Onde mais essa discrepância se aplica? Quais são suas origens?
  • Se essa discrepância é intencional, por que foi justificada? Qual deveria ser o comportamento correto?
  • O que pode ser feito para atenuar essas diferenças ao escrever scripts entre sistemas operacionais?
  • É shopt -o noclobbera resposta apropriada? É essa a verdadeira necessidade de noclobber?
linux
  • 1 respostas
  • 1353 Views
Martin Hope
vrms
Asked: 2025-01-27 20:18:20 +0800 CST

awk - como imprimir todos os campos depois de $5?

  • 12

Eu tenho uma saída semelhante a

  975  Jan/21 - 19:59:36 ### sed "/^#include_dir/a include_dir = 'conf.d'" /opt/db/data/efa_bauen_ni_14/postgresql.conf
  986  Jan/21 - 20:04:21 ### grep -l "^port = '5" /opt/db/data/postgres/efa_bauen_ni/conf.d/*.conf | xargs sed -i "s/port = '5/port = '6/"

agora quero reduzir cada linha a tudo depois $5, para obter o comando completo real?

Acho que poderia fazer | awk {'print $6, $7, $8, $9, $10, $11'}... etc. Mas isso parece muito anticientífico, pouco flexível e feio.

Alguém pode me aconselhar como fazer isso ou estou no caminho errado awkpara começar?

awk
  • 10 respostas
  • 1512 Views
Martin Hope
the_eraser
Asked: 2024-12-10 22:09:19 +0800 CST

bash - como remover uma variável local (dentro de uma função)

  • 12

Li o que está listado na Bibliografia sobre , unsete "Funções Shell".declarelocal

Minha versão do Bash é

GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
var='outer'
declare -p var
unset var
declare -p var
function foo {
  echo \""I'm in"\"
  local var='inner'
  declare -p var
  unset var
  declare -p var
}
foo

(a citação estranha I'm inestá lá apenas para preservar o destaque da sintaxe no bloco de citação a seguir.) Isso imprime

declare -- var="outer"
bash: declare: var: not found
"I'm in"
declare -- var="inner"
declare -- var

Há uma diferença em desconfigurar uma variável global e desconfigurar uma variável local dentro de uma função. No primeiro caso, a variável é removida. No último, a variável permanece declarada (mas desconfigurada).

Existe uma maneira de remover completamente uma variável local dentro de uma função (antes que a função retorne)? Ou seja, a saída seria

declare -- var="outer"
bash: declare: var: not found
"I'm in"
declare -- var="inner"
bash: declare: var: not found

Isso seria útil para testar se uma variável não existe dentro de uma função, como em

function foo {
  local var
  while
    declare -p var
  do
    echo "$var"
    ((var++))
    [[ "$var" -eq 4 ]] \
    && unset var
  done
}

Este código é executado em loop indefinidamente, imprimindo


declare -- var="1"
1
declare -- var="2"
2
declare -- var="3"
3
declare -- var

declare -- var="1"
1
declare -- var="2"
2
declare -- var="3"
3
declare -- var
[omissis]

Há algo errado em verificar se uma variável existe usando declare -p?

A única menção que encontrei no manual de referência do Bash sobre a diferença entre desconfigurar uma variável global e uma local é

Se uma variável no escopo local atual não estiver definida, ela permanecerá assim (aparecendo como não definida) até ser redefinida naquele escopo ou até que a função retorne. (ref. Manual de referência do Bash - seção "Funções do Shell")

onde a palavra que aparece é a única pista.

Bibliografia

  • Manual de referência do Bash , seção "4 comandos internos do Shell"
  • O que o unset faz?
bash
  • 1 respostas
  • 486 Views
Martin Hope
Just a learner
Asked: 2024-11-23 14:56:42 +0800 CST

Compreendendo o comando 'top' do Linux: confusão entre formato de exibição de memória e swap

  • 12

O valor "avail Mem" realmente se relaciona à memória física em vez de swap, apesar de ser exibido na linha swap? Notei que há um ponto no final da coluna "swap used".

linux
  • 2 respostas
  • 504 Views
Martin Hope
A.L
Asked: 2024-10-24 01:25:10 +0800 CST

Como saber se a rede está configurada através de /etc/network/interfaces, NetworkManager, Systemd ou Netplan?

  • 12

Recentemente instalei o Debian 12.7 em um novo armazenamento, este é um servidor headless sem ambiente de desktop.

Verifiquei a documentação do NetworkConfiguration do Debian e vi isto:

4 maneiras de configurar a rede

  • O arquivo de configuração de interfaces em /etc/network/interfaces (esta página): para configurações básicas ou simples (por exemplo, estação de trabalho)
  • NetworkManager : Este é o padrão para configuração de laptop
  • Systemd : Documento de referência do Debian Capítulo 5
  • Netplan : Documento de referência do Debian Capítulo 5

E agora estou confuso porque não entendi qual parte se aplica à minha instalação.

O sistema usa a configuração padrão, então a resposta pode ser direta, mas vamos supor que eu me conecte a uma máquina que não conheço e queira identificar a configuração de rede.

Como identificar a maneira que um sistema Debian (ou outra distribuição Linux) usa para configurar sua pilha de rede?

Minhas tentativas

/etc/network/interfaces

O arquivo existe:

root@serveur:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp2s0
iface enp2s0 inet dhcp
# This is an autoconfigured IPv6 interface
iface enp2s0 inet6 auto

Gerenciador de rede

O serviço não existe:

root@serveur:~# service network-manager status
Unit network-manager.service could not be found.

Sistemad

Existe um arquivo, mas seu conteúdo está comentado:

root@serveur:~# ls -lrth /etc/systemd/network/
total 0

root@serveur:~# cat /etc/systemd/networkd.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it under the
#  terms of the GNU Lesser General Public License as published by the Free
#  Software Foundation; either version 2.1 of the License, or (at your option)
#  any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the networkd.conf.d/ subdirectory. The latter is generally recommended.
# Defaults can be restored by simply deleting this file and all drop-ins.
#
# See networkd.conf(5) for details.

[Network]
#SpeedMeter=no
#SpeedMeterIntervalSec=10sec
#ManageForeignRoutingPolicyRules=yes
#ManageForeignRoutes=yes
#RouteTable=

[DHCPv4]
#DUIDType=vendor
#DUIDRawData=

[DHCPv6]
#DUIDType=vendor
#DUIDRawData=

Plano de rede

Não há conf:

root@serveur:~# ls -lrth /etc/netplan/
ls: cannot access '/etc/netplan/': No such file or directory

Observações

Este sistema usa /etc/network/interfaceso Systemd para configurar a rede?

debian
  • 3 respostas
  • 293 Views
Martin Hope
Ned64
Asked: 2017-12-03 01:22:38 +0800 CST

Como comparar diferentes formatos de impressão digital SSH (hash de chave pública)?

  • 13

Quando eu faço login em um servidor/host SSH, sou questionado se o hash de sua chave pública está correto, assim:

# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

Para poder comparar, usei este comando no servidor SSH anteriormente e salvei os resultados em um arquivo no cliente:

# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)

Por alguma grande razão (sem dúvida), um desses comandos usa uma maneira diferente (mais recente?) De exibir o hash, ajudando enormemente os invasores man-in-the-middle porque requer uma conversão não trivial para compará-los.

Como faço para comparar esses dois hashes, ou melhor: forçar um comando a usar o formato do outro?

A -Eopção para ssh-keygennão está disponível no servidor.

sshd ssh
  • 2 respostas
  • 21084 Views
Martin Hope
Miguel Mesquita Alfaiate
Asked: 2017-12-02 01:20:10 +0800 CST

Como recuperar crontab excluído

  • 13

Eu estava tentando editar o crontab no terminal e digitei acidentalmente crontab -rem vez de crontab -e. Quem imaginaria que um comando tão perigoso ficaria ao lado da carta para editar o crontab? Além disso, ainda estou tentando descobrir como crontab -rnão pede confirmação?

Independentemente da minha falta de credibilidade sobre como isso é possível, minha pergunta é: posso recuperar o crontab perdido?

centos cron
  • 3 respostas
  • 6553 Views
Martin Hope
ilyaigpetrov
Asked: 2017-11-27 22:11:52 +0800 CST

Como fazer todo o tráfego passar por uma interface no Linux

  • 13

Eu tenho uma interface autoescrita tun0 ( baseada em TUN/TAP ) que emite o que recebe.
Preciso que todo tráfego do sistema flua por essa interface.
O papel da interface é:

  1. Para descobrir os pacotes que provavelmente serão censurados e canalizá-los.
  2. Passe todos os outros tráfegos intocados.

Como você deve imaginar, estou tentando construir uma ferramenta anticensura.
A decisão sobre o tunelamento deve ser tomada dentro do processo tun0
porque somente lá podemos usar DNS confiáveis.

Preciso da sua ajuda para me mostrar como fazer todo o tráfego fluir por meio de uma interface autoescrita tun0. Se tun0 precisar de alterações, peço que forneça essas alterações.

Abaixo está como tentei fazer todo o tráfego passar pelo tun0 e falhei (falha nos pings).

Compilando

  1. gcc tun0.c
  2. sudo ./a.out

Configurando

  1. sudo ip addr add 10.0.0.1/24 dev tun0
  2. criar tabela João

    $ cat /etc/iproute2/rt_tables 
    #
    # reserved values
    #
    255     local
    254     main
    253     default
    0       unspec
    #
    # local
    #
    #1      inr.ruhep
    
    200 John
    

A ordem é importante:

  1. sudo ip rule add from all lookup John
  2. sudo ip route add default dev tun0 table John
  3. sudo ip rule add iif tun0 lookup main priority 500

    $ ip rule
    0:      from all lookup local 
    500:    from all iif tun0 lookup main 
    32765:  from all lookup John 
    32766:  from all lookup main 
    35000:  from all lookup default 
    

Solução de problemas

  1. sudo tcpdump -i wlp2s0 -qtln icmpe então ping -I tun0 8.8.8.8não mostrar nenhum pacote capturado, significa que nenhum pacote foi transmitido de tun0 para wlp2s0 via iif tun0 lookup mainregra.

  2. Quando substituí tun0por lotodos os lugares, funcionou para mim.

Também tentei

  1. Desativando a filtragem de caminho reverso, rp_filter=0em/etc/sysctl.conf

Resposta Solução de problemas

iptables -I FORWARD -j LOG --log-prefix "filter/FORWARD " 
iptables -t nat -I OUTPUT -j LOG --log-prefix "nat/OUTPUT " 
iptables -t nat -I PREROUTING -j LOG --log-prefix "nat/PREROUTING " 
iptables -t nat -I POSTROUTING -j LOG --log-prefix "nat/POSTROUTNG "
tail -f /var/log/syslog

As fontes modificadas da resposta também estão aqui .

linux iptables
  • 1 respostas
  • 8807 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve