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 / user-106650

Marcus Müller's questions

Martin Hope
Marcus Müller
Asked: 2025-03-10 18:39:47 +0800 CST

zsh: substitute-if-undef-or-null para $1, $2 …: ${1:substitution} não funciona

  • 5

Gostaria de ter parâmetros padrão, ou seja, meu exemplo mínimo reproduzível é:

#!/usr/bin/zsh
a=${1:a}
printf 'a: "%s"\n' "${a}"
b=${2:./build}
printf 'b: "%s"\n' "${b}"

Eu esperaria ver, ao executar ./demo.zshsem argumentos:

a: "a"
b: "./build"

Em vez disso eu recebo

a: ""
./demo.zsh:4: bad floating point constant
  • por que ${1:a}parece assumir $1que está definido e não é zero, mas o $aexpandido é uma string vazia?
  • de onde vem a análise incorreta de ponto flutuante? Se eu substituir ./buildpor build, ele reclama sobre bser um modificador desconhecido.

Se eu corro ./demo.zsh asdf bar, eu ganho

a: "/tmp/fasf"
./demo.zsh:4: bad floating point constant

o que, francamente, é ainda mais confuso; /tmp/de onde vem (é o cwd).

zsh
  • 2 respostas
  • 76 Views
Martin Hope
Marcus Müller
Asked: 2024-07-27 02:14:41 +0800 CST

Execute uma atualização *uma* vez no desligamento – systemd-run?

  • 7

Tenho algumas coisas que não quero atualizar enquanto minha sessão gráfica estiver em execução, mas ficaria feliz em atualizá-las no desligamento (depois que minha sessão gráfica terminar, enquanto a rede ainda estiver ativa), uma vez . Portanto, não quero escrever um arquivo de serviço, habilitá-lo e executá-lo a cada desligamento.

Agora, pensei, OK, systemd-runpara o resgate:

systemd-run \
           --property=Type=oneshot \
           --property=DefaultDependencies=no \
           --property=Requires=network.service \
           --property=WantedBy=shutdown.target \
           /usr/bin/dnf5 update -y package1 packge2…

Mas isso falha com

Failed to start transient service unit: Dependency type WantedBy may not be created transiently.

Existe outra maneira de fazer isso?

shutdown
  • 3 respostas
  • 123 Views
Martin Hope
Marcus Müller
Asked: 2024-04-30 01:44:49 +0800 CST

udisksctl: obtém o dispositivo de loop e o ponto de montagem sem recorrer à análise da saída localizada?

  • 8

udisksctlé minha ferramenta preferida ao lidar com imagens do sistema de arquivos ( exemplo recente , mas tenho feito isso em todos os lugares ).

A dança normalmente parece

fallocate -l ${img_size} filesystem.img
mkfs.${fs} filesystem.img

# Set up loop device as regular user
loopback=$(udisksctl loop-setup -b "${img_file}" | sed 's/.* \([^ ]*\)\.$/\1/')

# Mount as regular user
mounted=$(udisksctl mount -b "${loopback}" | sed 's/^.* \([^ ]*\)$/\1/')

# Do the testing/benchmarking/file management
# e.g.:
cp -- "${files[@]}" "${mounted}"

Francamente, tenho um mau pressentimento sobre a maneira como analiso a saída de udisksctl; estas são strings claramente direcionadas ao ser humano:

Mapped file filesystem.img as /dev/loop0.
Mounted /dev/loop1 at /run/media/marcus/E954-81FB

E não acho que alguém considere seu formato real como "API". Então, meus scripts podem falhar no futuro! (Sem mencionar os demônios nasais que convido se o nome do arquivo de imagem contiver quebras de linha.)

udisksctlnão parece ter uma opção de saída "porcelana" ou similar. Existe um método existente que faz udisksctlo trabalho de montagem de loopback com privilégio de usuário por meio de udisks2, com uma saída adequada e inequívoca?

command-line
  • 1 respostas
  • 61 Views
Martin Hope
Marcus Müller
Asked: 2023-11-03 06:40:44 +0800 CST

O dnf5 suporta downloads paralelos de metadados? Como faço isso?

  • 5

Estou muito feliz em usá-lo dnf5no meu fedora 38. É uma nova biblioteca para resolução de dependências e um novo frontend, substituindo dnf/ libdnf(embora quase completamente compatível com a CLI do dnf).

É muito mais rápido fazer coisas como pesquisar palavras no banco de dados de pacotes, o que é revigorante. Falando em refrescante:

Posso configurar dnf5para baixar metadados de diferentes repositórios remotos (Fedora 38, Fedora 38, atualizações, Fedora 38 openh264, atualizações não gratuitas do Fedora 38, atualizações de fusão rpm, atualizações não gratuitas de fusão rpm…) em paralelo?

package-management
  • 1 respostas
  • 56 Views
Martin Hope
Marcus Müller
Asked: 2022-06-15 08:24:48 +0800 CST

Como dizer ao gnome-session(3), ou gnome-screensaver, que houve atividade?

  • 2

Em algumas circunstâncias, não quero que minha tela bloqueie. (Normalmente: estou me afastando da mesa, enquanto uma computação está sendo executada, mas não saio da sala e ainda fico de olho no motivo pelo qual ela está ativa; às vezes, adiciono mais tarefas a uma fila, então que não está "feito quando está feito")

Existe um mecanismo para informar a sessão do GNOME ou ~ screensaver para não bloquear? Eu esperava que houvesse uma API DBUS inteligente para isso, mas a documentação do GNOME parece depender do homedir privado de alguém que o excluiu: https://wiki.gnome.org/Projects/SessionManagement/GnomeSession#D-Bus_API links para o 404 https://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html .

Melhor ainda: existe uma API padronizada do Freedesktop para isso? Eu trabalho principalmente na sessão Cinnamon com um WM incrível, mas esse problema eu encontro principalmente em máquinas onde só tenho acesso a uma sessão do Gnome; no entanto, se houver uma solução de tamanho único, eu preferiria isso.

gnome3 screen-lock
  • 1 respostas
  • 23 Views
Martin Hope
Marcus Müller
Asked: 2022-06-13 06:58:05 +0800 CST

Eu preciso de um pacote para minha versão do RHEL/EPEL/CentOS/Fedora, mas só está empacotado para outras versões do Redhatoids

  • 0

Muitas vezes estou na situação em que faço backport de algum software empacotado no Fedora para o CentOS, ou encaminhei algo de uma versão mais antiga do EPEL para o Fedora, ou vice-versa.

Como posso fazer isso com o mínimo de esforço?

centos fedora
  • 1 respostas
  • 64 Views
Martin Hope
Marcus Müller
Asked: 2022-05-19 00:50:30 +0800 CST

Container: Falha ao iniciar mutter (como compositor de wayland sem cabeça com uma sessão do gnome)

  • 2

O que eu gostaria de fazer é ter

  • um contêiner (contêiner OCI, de preferência) que funciona sem uma interface do gerenciador de sessão do host exposta "para" ele e
  • executa um compositor wayland
  • tem uma sessão >= gnome40 incluindo todos os elementos da interface do usuário nela
  • permite exibição remota e interação via RDP ou VNC

Então, isso dita/sugere como ferramental, respectivamente:

  • podman
  • mutter(como isso que o Gnome iria querer)
  • gnome-shell
  • gnome-remote-desktop, que vem com o Gnome42

O que estou fazendo atualmente é

podman run -it --rm -p 9999:9999 ubuntu:22.04
#           ^---------------------------------Interactive
#               ^-----------------------------Don't keep state after finishing
#                    ^------------------------We'll need a port fwd into the container for RDP/VNC
#                                ^------------Not a great fan of Canonical, but 22.04 brings Gnome42

root@container$> apt update; apt install -y mutter gnome-remote-desktop gnome-shell
[… [success]]

root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:35.151: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:35.191: Created surfaceless renderer without GPU
mutter-Message: 10:30:35.205: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:35.205: Added virtual monitor Meta-0

(mutter:13413): mutter-WARNING **: 10:30:35.211: WL: error: XDG_RUNTIME_DIR not set in the environment
(mutter:13413): mutter-ERROR **: 10:30:35.211: Failed to create socket
root@container$> export XDG_RUNTIME_DIR=/run/user/0/ ; mkdir -p ${XDG_RUNTIME_DIR}
root@container$> mutter --no-x11 --wayland --headless --virtual-monitor 1600x1000 
mutter-Message: 10:30:47.657: Running Mutter (using mutter 42.0) as a Wayland display server
mutter-Message: 10:30:47.698: Created surfaceless renderer without GPU
mutter-Message: 10:30:47.712: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:30:47.712: Added virtual monitor Meta-0
mutter-Message: 10:30:47.717: Using Wayland display name 'wayland-0'
**
mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)
Bail out! mutter:ERROR:../src/wayland/meta-wayland.c:379:set_gnome_env: assertion failed: (session_bus)

[1]+  Aborted                 (core dumped) mutter --sm-disable --no-x11 --wayland --headless --virtual-monitor 1600x1000

Não tenho certeza para onde ir a partir daqui. Devo iniciar um shell gnome diretamente?

# fresh container to avoid any conflicts
root@7396d1bb8693:/> gnome-shell --no-x11 --wayland --headless --virtual-monitor 1600x1000
mutter-Message: 10:45:06.276: Running GNOME Shell (using mutter 42.0) as a Wayland display server
mutter-Message: 10:45:06.323: Created surfaceless renderer without GPU
mutter-Message: 10:45:06.337: Disabling DMA buffer screen sharing (not hardware accelerated)
mutter-Message: 10:45:06.338: Added virtual monitor Meta-0
Failed to connect to session bus: Cannot autolaunch D-Bus without X11 $DISPLAYroot@7396d1bb8693:/>

Também não funciona.

  • Como faço para iniciar uma sessão headless gnome wayland em um contêiner sem privilégios?
gnome wayland
  • 1 respostas
  • 423 Views
Martin Hope
Marcus Müller
Asked: 2022-01-10 04:36:37 +0800 CST

O que é o "comprimento" de uma string em compatíveis com Bourne shell '${#string}`?

  • 2

A partir desta discussão:

Quando eu tenho (zsh 5.8, bash 5.1.0)

var="ASCII"
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"

a resposta é simples: são 5 caracteres, ocupando 5 bytes.

Agora, var=Müllerrende

Müller has the length 6, and is 7 bytes long

O que sugere que o ${#}operador conta pontos de código, não bytes. Isso é um pouco obscuro no POSIX , onde eles dizem que conta "caracteres". Isso ficaria mais claro se os charatores em POSIX C não fossem octetos, normalmente.

De qualquer forma: Legal! Que bom, vendo isso LANG==en_US.utf8.

Agora,

var='??‍♀️'
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
??‍♀️ has the length 5, and is 17 bytes long

Soooo, nós decompomos "Mermaid of dark skin color" no codepoint Unicode

  1. Merperson
  2. Pele escura
  3. Junção de largura zero
  4. Fêmea
  5. Imprimir imprimir o caractere anterior como emoji

Tudo bem, então estamos realmente contando pontos de código Unicode!

var="e\xcc\x81"
echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
é has the length 9, and is 9 bytes long

(claro, minha fonte de console decidiu que ´combina com o espaço a seguir, não o anterior e. O último estaria correto. Mas vamos deixar minha raiva sobre isso para outro momento.)

Hum, um leve "wat" está em ordem aqui.

> printf "e\xcc\x81"|wc -c
3
> printf "%s" "${var}" |wc -c
9
> echo -n ${var} |wc -c
3
> echo "${var} has the length ${#var}, and is $(printf "%s" "$var"| wc -c) bytes long"
é has the length 9, and is 9 bytes long
> printf "%s" "${var}" |xxd
00000000: 655c 7863 635c 7838 31                   e\xcc\x81

Aqui é onde eu desisto.

echo $var, echo ${var}e echo "${var}"todos "corretamente" emitem três bytes. No entanto, echo ${#var}me diz que são 9 caracteres.

Onde isso está documentado/padronizado, quais são as regras para tudo isso?

bash zsh
  • 1 respostas
  • 251 Views
Martin Hope
Marcus Müller
Asked: 2022-01-07 04:27:44 +0800 CST

Pipes nomeados do Linux: não tão FIFO quanto se pensava

  • 10

Resumidamente:

mkfifo fifo; (echo a > fifo) &; (echo b > fifo) &; cat fifo

O que eu esperava:

a
b

já que o primeiro echo … > fifodeve ser o primeiro a abrir o arquivo, então espero que esse processo seja o primeiro a gravar nele (com o desbloqueio aberto primeiro).

O que eu ganho:

b
a

Para minha surpresa, esse comportamento também aconteceu ao abrir dois terminais separados para fazer a escrita em processos definitivamente independentes.

Estou entendendo mal alguma coisa sobre a semântica de primeiro a entrar, primeiro a sair de um pipe nomeado?

Stephen sugeriu adicionar um atraso:

#!/usr/bin/zsh
delay=$1
N=$(( $2 - 1 ))
out=$(for n in {00..$N}; do
  mkfifo /tmp/fifo$n
  (echo $n > /tmp/fifo$n) &
  sleep $delay
  (echo $(( $n + 1000 )) > /tmp/fifo$n )&
  # intentionally using `cat` here to not step into any smartness
  cat /tmp/fifo$n | sort -C || echo +1
  rm /tmp/fifo$n
done)
echo "$(( $res )) inverted out of $(( $N + 1 ))"

Agora, isso funciona 100% correto ( delay = 0.1, N = 100).

Ainda assim, a execução mkfifo fifo; (echo a > fifo) &; sleep 0.1 ; (echo b > fifo) &; cat fifomanual quase sempre produz a ordem invertida.

Na verdade, mesmo copiar e colar o forpróprio loop falha na metade das vezes. Estou muito confuso sobre o que está acontecendo aqui.

linux fifo
  • 2 respostas
  • 3542 Views

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