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
intelfx
Asked: 2025-03-16 01:21:01 +0800 CST

GNU paralelo: substitui uma string ou nada dependendo do valor do argumento

  • 7

Estou tentando usar o GNU parallel para executar um comando para todas as combinações de vários sinalizadores de alteração de comportamento:

parallel 'cmd --foo {1} --bar {2} {3} out.foo={1}.bar={2}/{3/}' ::: 0 1 ::: 0 1 ::: in/*

Isso deve gerar uma série de invocações como:

cmd --foo 0 --bar 1 'in/fileXYZ' 'out.foo=0.bar=1/fileXYZ'
cmd --foo 1 --bar 0 'in/fileXYZ' 'out.foo=1.bar=0/fileXYZ'

No entanto, a CLI dessa ferramenta é irregular: --fooaceita um argumento booleano, enquanto --barnão aceita um argumento (e também não tem forma negativa). Assim, as invocações devem se parecer com isso:

cmd --foo 0 --bar 'in/fileXYZ' 'out.foo=0.bar=1/fileXYZ'
cmd --foo 1       'in/fileXYZ' 'out.foo=1.bar=0/fileXYZ'

Qual é a melhor maneira (menos prolixa) no GNU parallel de transformar um argumento de 1ou 0na presença ou ausência de --barna linha de comando?

gnu-parallel
  • 1 respostas
  • 35 Views
Martin Hope
preferred_anon
Asked: 2025-03-15 21:52:01 +0800 CST

O que acontece se uma partição raiz, montada via USB, for desconectada?

  • 5

Tenho um laptop sem um disco rígido interno. Para tirar algum proveito dele, estou pensando em colocar a partição raiz em uma mídia externa, por USB. Não vejo nenhuma razão para que isso não funcione, mas imagino o que aconteceria se eu desconectasse e reconectasse o USB acidentalmente.

Obviamente, em geral, é possível reconectar dispositivos automaticamente, mas se a partição root desconectar, isso ainda seria possível? Tenho quase certeza de que um sistema em execução não morreria imediatamente se a root desaparecesse, mas não ficaria surpreso se a remontagem se tornasse impossível.

automounting
  • 1 respostas
  • 33 Views
Martin Hope
metablaster
Asked: 2025-03-15 20:16:56 +0800 CST

É seguro limpar (excluir) referências a unidades systemd ausentes?

  • 5

Listar serviços ausentes

systemctl --state=not-found --all

Saída:

      UNIT                           LOAD      ACTIVE   SUB  DESCRIPTION                   
● boot.automount                 not-found inactive dead boot.automount                
● home.mount                     not-found inactive dead home.mount
● tmp.mount                      not-found inactive dead tmp.mount                     
● connman.service                not-found inactive dead connman.service
● console-screen.service         not-found inactive dead console-screen.service
● dpdk.service                   not-found inactive dead dpdk.service
● fcoe.service                   not-found inactive dead fcoe.service
● firewalld.service              not-found inactive dead firewalld.service
● haveged.service                not-found inactive dead haveged.service
● ip6tables.service              not-found inactive dead ip6tables.service
● iptables.service               not-found inactive dead iptables.service
● iscsi-shutdown.service         not-found inactive dead iscsi-shutdown.service
● iscsi.service                  not-found inactive dead iscsi.service
● iscsid.service                 not-found inactive dead iscsid.service
● kbd.service                    not-found inactive dead kbd.service
● rbdmap.service                 not-found inactive dead rbdmap.service
● systemd-hwdb-update.service    not-found inactive dead systemd-hwdb-update.service
● systemd-oomd.service           not-found inactive dead systemd-oomd.service
● systemd-update-done.service    not-found inactive dead systemd-update-done.service
● systemd-vconsole-setup.service not-found inactive dead systemd-vconsole-setup.service
● xencommons.service             not-found inactive dead xencommons.service
● xendomains.service             not-found inactive dead xendomains.service            
● virtlxcd.socket                not-found inactive dead virtlxcd.socket
● virtqemud.socket               not-found inactive dead virtqemud.socket
● virtvboxd.socket               not-found inactive dead virtvboxd.socket
● virtvzd.socket                 not-found inactive dead virtvzd.socket
● virtxend.socket                not-found inactive dead virtxend.socket

Encontre unidades que fazem referência a serviços ausentes

grep -rR "<service_name>" /usr/lib/systemd
grep -rR "<service_name>" /etc/systemd

# See tables in man page for more directories to search with grep and to learn their purpose
man systemd.unit

Amostra paratmp.mount

grep -rR "tmp.mount" /usr/lib/systemd
grep -rR "tmp.mount" /etc/systemd

Saída:

/usr/lib/systemd/system/basic.target:After=sysinit.target sockets.target paths.target slices.target tmp.mount
/usr/lib/systemd/system/basic.target:Wants=tmp.mount

Limpar referências

sudo nano /usr/lib/systemd/system/basic.target

Conteúdo:

[Unit]
Description=Basic System
Documentation=man:systemd.special(7)
Requires=sysinit.target
Wants=sockets.target timers.target paths.target slices.target
After=sysinit.target sockets.target paths.target slices.target tmp.mount

RequiresMountsFor=/var /var/tmp
Wants=tmp.mount

Aqui encontramos tmp.mountabaixo After=eWants=

Quero excluir essas entradas para que systemctl --state=not-found --allnão sejam mais listadas, e assim por diante para cada unidade ausente.

Pergunta

É seguro excluir essas entradas para cada unidade ausente no sistema?

systemd
  • 1 respostas
  • 34 Views
Martin Hope
Mikhail Edoshin
Asked: 2025-03-15 19:56:24 +0800 CST

Símbolos incomuns (parênteses) no nome de uma variável de ambiente

  • 5

Situação. Eu trabalho no Cygwin e há uma variável de ambiente do Windows que aponta para uma das pastas especiais:

ProgramFiles(x86)=C:\Program Files (x86)

Como você vê, o nome da variável contém parênteses. Tentativas ingênuas de ler o valor parecem não funcionar:

echo "${ProgramFiles(x86)}"    # bad substitution
echo "${ProgramFiles\(x86\)}"  # bad substitution

Tentei encontrar regras gerais sobre como escapar caracteres em nomes de variáveis, mas não consegui.

Pergunta. É possível usar uma variável cujo nome inclui parênteses ou outros símbolos incomuns?

PS No meu caso específico obtive o mesmo valor com cygpath -F 42.

bash
  • 4 respostas
  • 88 Views
Martin Hope
Jakob
Asked: 2025-03-15 19:16:38 +0800 CST

Posso restaurar meu diretório inicial após instalar uma nova versão do Fedora ou devo primeiro instalar a versão anterior e depois atualizar?

  • 5

Tenho um backup do meu diretório home que foi criado no Fedora 40 (que foi configurado pelo meu empregador anterior). Agora tenho um novo SSD no meu laptop no qual quero usar o Fedora 41 com os dados (e idealmente as configurações) do meu antigo diretório home.

No geral, sei muito pouco sobre Linux e estou procurando uma resposta amigável para iniciantes.

Agora, vejo 2 opções A e B:

UM)

  1. Primeiro, instale o Fedora 40
  2. restaurar meu diretório inicial do meu backup
  3. depois, atualize para o Fedora 41

O procedimento de atualização pode atualizar automaticamente os arquivos de configuração do meu backup que não eram compatíveis com o Fedora 41? Dentro da versão A), devo i) reinstalar todos os meus aplicativos antes da 2. ou ii) entre 2. e 3. ou iii) depois da 3.?

B)

  1. Instalar diretamente o Fedora 41
  2. restaurar meu diretório inicial do meu backup

Uma instalação completamente nova do Fedora 41 é mais estável do que atualizar do 40? Arquivos de configuração do Fedora 40 no diretório home podem ser incompatíveis com o Fedora 41? Dentro da versão B), devo i) reinstalar todos os meus aplicativos antes da 2. ou ii) depois da 2.? Instalar um aplicativo sobrescreve seus arquivos de configuração no diretório home?

Ou existe uma opção melhor, C?

fedora
  • 1 respostas
  • 27 Views
Martin Hope
rakim0
Asked: 2025-03-15 15:54:15 +0800 CST

Plugin Fish: Como definir variáveis ​​e importá-las em um arquivo diferente

  • 5

Quero definir as seguintes variáveis: URL, Nome de usuário e Senha em variables.fish e então importar e usar. Já que dessa forma eu só precisaria configurá-lo em um lugar em vez de modificar cada aplicativo

Estou perplexo sobre como fazer isso.
A estrutura do arquivo está atualmente assim.

└── functions
    │── variables.fish
    │   └── variables like URL, username and password
    │── proxy.fish
    │   └── handler function
    │── apps
    │   └── all the app specific logic goes here
    └── utils 
        └── helper functions: pretty printing etc.

Qualquer dica seria bem-vinda, obrigado!

linux
  • 1 respostas
  • 17 Views
Martin Hope
jsx97
Asked: 2025-03-14 23:58:59 +0800 CST

Reverter nomes de arquivos depois que eles foram distorcidos usando codificação diferente

  • 11

Eu tenho um arquivo

СМП бваг™вга†

As três primeiras letras são cirílicas e a parte restante é mojibake .

" Mojibake é um texto distorcido ou incompreensível que é o resultado de um texto decodificado usando uma codificação de caracteres não intencional." — Wikipédia

Originalmente, era

СМП структура

mas então ficou confuso de alguma forma, provavelmente porque o arquivo foi compactado no Windows XP e depois descompactado em um Mac, por um usuário inexperiente.

Tentei consertar usando convmvand iconv, assim:

convmv -r -f cp1251 -t utf-8 DIR
ls | iconv -f cp1251 -t cp850 | iconv -f cp866

mas ainda não obtive sucesso. Alguém pode ajudar com isso?

atualização 1

Hexdump de СМП бваг™вга†:

0000000    d0  a1  d0  9c  d0  9f  20  d0  b1  d0  b2  d0  b0  d0  b3  e2
           С   **  М   **  П   **      б   **  в  **   а  **   г   **  ™
0000020    84  a2  d0  b2  d0  b3  d0  b0  e2  80  a0  0a                
           **  **  в  **   г  **   а   **  †   **  **  \n                
0000034

Hexdump de СМП структура:

0000000    d0  a1  d0  9c  d0  9f  20  d1  81  d1  82  d1  80  d1  83  d0
           С   **  М   **  П   **      с  **   т  **   р  **   у  **   к
0000020    ba  d1  82  d1  83  d1  80  d0  b0  0a                        
           **  т   **  у   **  р   **  а   **  \n                        
0000032
filenames
  • 1 respostas
  • 264 Views
Martin Hope
Stewart
Asked: 2025-03-14 23:06:40 +0800 CST

dlopen() falha após a transição do Debian trixie libc: "Não é possível habilitar a pilha executável"

  • 10

Estou executando o mesmo binário de 32 bits, de terceiros e de código fechado desde 2018. Esta semana, em trixie/testingservidores Debian (possivelmente devido a uma libc6transição?), o programa começou a travar na inicialização. Infelizmente, não consigo fazer com que o fornecedor original o recompile para mim.

A única dica que tenho são estas linhas impressas no stdout:

Start of process LocalCtrl...
SL - error in dlopen(libDSS_Operator.so):
LocalCtrl initialization failed...

Ou preciso fazer isso funcionar ou preciso me comprometer a dar suporte ao Deb12 para sempre.

Qual é a melhor maneira de solucionar/consertar isso?

Posso reproduzir isso em um ambiente mais estéril com este programa de exemplo:

#include <stdio.h>
#include <dlfcn.h>

int main() {
    void* so = dlopen(
        "/opt/<package>/Cots/OPERATOR/libDSS_Operator.so", 
        RTLD_NOW
    );

    if (so == NULL) {
        printf("dlopen() failed: %s\n", dlerror());
        return 1;
    } 
    printf("Success\n");
    dlclose(so);
    return 0;
}

Dei uma olhada em ldd, strace, LD_DEBUG=libs, e readelf.

Em uma máquina Deb11, onde o processo está funcionando bem, obtenho:

$ dpkg --print-foreign-architectures
i386

$ sudo apt install gcc-multilib

$ gcc main.c -m32 -ldl

$ file a.out
a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=eabedb331eafcdef4e2f839f71df7fc7330069d2, for GNU/Linux 3.2.0, not stripped

$ ./a.out
Success

$ ldd /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
    linux-gate.so.1 (0xf7f25000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7d1b000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7c17000)
    /lib/ld-linux.so.2 (0xf7f27000)

$ file /opt/<pacakge>/Cots/OPERATOR/libDSS_Operator.so
/opt/<package>/Cots/OPERATOR/libDSS_Operator.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

$ strace ./a.out
execve("./a.out", ["./a.out"], 0x7ffeb7d8e5b0 /* 22 vars */) = 0
[ Process PID=13616 runs in 32 bit mode. ]
brk(NULL)                               = 0x5851f000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f78000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102958, ...}) = 0
mmap2(NULL, 102958, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7f5e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\21\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=17924, ...}) = 0
mmap2(NULL, 20596, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f58000
mmap2(0xf7f59000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xf7f59000
mmap2(0xf7f5b000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xf7f5b000
mmap2(0xf7f5c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xf7f5c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\260\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1987668, ...}) = 0
mmap2(NULL, 1996648, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7d70000
mprotect(0xf7d89000, 1871872, PROT_NONE) = 0
mmap2(0xf7d89000, 1392640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0xf7d89000
mmap2(0xf7edd000, 475136, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16d000) = 0xf7edd000
mmap2(0xf7f52000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e1000) = 0xf7f52000
mmap2(0xf7f55000, 10088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f55000
close(3)                                = 0
set_thread_area({entry_number=-1, base_addr=0xf7f794c0, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=12)
mprotect(0xf7f52000, 8192, PROT_READ)   = 0
mprotect(0xf7f5c000, 4096, PROT_READ)   = 0
mprotect(0x56648000, 4096, PROT_READ)   = 0
mprotect(0xf7faa000, 4096, PROT_READ)   = 0
munmap(0xf7f5e000, 102958)              = 0
brk(NULL)                               = 0x5851f000
brk(0x58540000)                         = 0x58540000
brk(0x58541000)                         = 0x58541000
openat(AT_FDCWD, "/opt/<package>/Cots/OPERATOR/libDSS_Operator.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0X\6\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=4398, ...}) = 0
mmap2(NULL, 6844, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f76000
mmap2(0xf7f77000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xf7f77000
mprotect(0xf7faa000, 2636, PROT_READ|PROT_WRITE) = 0
mprotect(0xf7faa000, 2636, PROT_READ)   = 0
mprotect(0xffa54000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102958, ...}) = 0
mmap2(NULL, 102958, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7d56000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\241\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1058344, ...}) = 0
mmap2(NULL, 1060976, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7c52000
mmap2(0xf7c5c000, 790528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0xf7c5c000
mmap2(0xf7d1d000, 225280, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcb000) = 0xf7d1d000
mmap2(0xf7d54000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x101000) = 0xf7d54000
close(3)                                = 0
mprotect(0xf7d54000, 4096, PROT_READ)   = 0
mprotect(0xf7f76000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0xf7f76000, 4096, PROT_READ|PROT_EXEC) = 0
munmap(0xf7d56000, 102958)              = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x4), ...}) = 0
write(1, "Success\n", 8Success
)                = 8
munmap(0xf7f76000, 6844)                = 0
munmap(0xf7c52000, 1060976)             = 0
exit_group(0)                           = ?
+++ exited with 0 +++


$ LD_DEBUG=libs ./a.out
     13617: find library=libdl.so.2 [0]; searching
     13617:  search cache=/etc/ld.so.cache
     13617:   trying file=/lib/i386-linux-gnu/libdl.so.2
     13617: 
     13617: find library=libc.so.6 [0]; searching
     13617:  search cache=/etc/ld.so.cache
     13617:   trying file=/lib/i386-linux-gnu/libc.so.6
     13617: 
     13617: 
     13617: calling init: /lib/i386-linux-gnu/libc.so.6
     13617: 
     13617: 
     13617: calling init: /lib/i386-linux-gnu/libdl.so.2
     13617: 
     13617: 
     13617: initialize program: ./a.out
     13617: 
     13617: 
     13617: transferring control: ./a.out
     13617: 
     13617: find library=libm.so.6 [0]; searching
     13617:  search cache=/etc/ld.so.cache
     13617:   trying file=/lib/i386-linux-gnu/libm.so.6
     13617: 
     13617: 
     13617: calling init: /lib/i386-linux-gnu/libm.so.6
     13617: 
Success
     13617: 
     13617: calling fini: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so [0]
     13617: 
     13617: 
     13617: calling fini: /lib/i386-linux-gnu/libm.so.6 [0]
     13617: 
     13617: 
     13617: calling fini: ./a.out [0]
     13617: 
     13617: 
     13617: calling fini: /lib/i386-linux-gnu/libdl.so.2 [0]
     13617: 

Nos servidores Deb13, onde estou enfrentando o problema, as saídas são muito mais curtas:

$ dpkg --print-foreign-architectures
i386

$ sudo apt install gcc-multilib

$ gcc main.c -m32 -ldl

$ file a.out
a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=ab5677099dd8d392861f817ee098264a76a16792, for GNU/Linux 3.2.0, not stripped

$ ./a.out 
dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument

$ ldd /opt/<package>/Cots/OPERATOR/libDSS_Operator.so 
    linux-gate.so.1 (0xf7ed4000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c70000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7b53000)
    /lib/ld-linux.so.2 (0xf7ed6000)

$ file /opt/<pacakge>/Cots/OPERATOR/libDSS_Operator.so
.../libDSS_Operator.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

$ strace ./a.out
execve("./a.out", ["./a.out"], 0x7ffccb5bca20 /* 24 vars */) = 0
[ Process PID=8276 runs in 32 bit mode. ]
brk(NULL)                               = 0x57fac000
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f4a000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=122402, ...}) = 0
mmap2(NULL, 122402, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7f2c000
close(3)                                = 0
openat(AT_FDCWD, "/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0O\2\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=2315004, ...}) = 0
mmap2(NULL, 2349360, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7cee000
mmap2(0xf7d11000, 1609728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0xf7d11000
mmap2(0xf7e9a000, 544768, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ac000) = 0xf7e9a000
mmap2(0xf7f1f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x231000) = 0xf7f1f000
mmap2(0xf7f22000, 39216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f22000
close(3)                                = 0
set_thread_area({entry_number=-1, base_addr=0xf7f4b500, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=12)
set_tid_address(0xf7f4b568)             = 8276
set_robust_list(0xf7f4b56c, 12)         = 0
rseq(0xf7f4b480, 0x20, 0, 0x53053053)   = 0
mprotect(0xf7f1f000, 8192, PROT_READ)   = 0
mprotect(0x56575000, 4096, PROT_READ)   = 0
mprotect(0xf7f86000, 8192, PROT_READ)   = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
munmap(0xf7f2c000, 122402)              = 0
getrandom("\x81\x4a\xa4\xb7", 4, GRND_NONBLOCK) = 4
brk(NULL)                               = 0x57fac000
brk(0x57fcd000)                         = 0x57fcd000
brk(0x57fce000)                         = 0x57fce000
openat(AT_FDCWD, "/opt/<package>/Cots/OPERATOR/libDSS_Operator.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0X\6\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=4398, ...}) = 0
mmap2(NULL, 6844, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f48000
mmap2(0xf7f49000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xf7f49000
close(3)                                = 0
munmap(0xf7f48000, 6844)                = 0
statx(1, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFCHR|0620, stx_size=0, ...}) = 0
write(1, "dlopen() failed: /opt/..."..., 153dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument
) = 153
exit_group(1)                           = ?
+++ exited with 1 +++

$ LD_DEBUG=libs ./a.out
      8277: find library=libc.so.6 [0]; searching
      8277:  search cache=/etc/ld.so.cache
      8277:   trying file=/lib/i386-linux-gnu/libc.so.6
      8277: 
      8277: 
      8277: calling init: /lib/ld-linux.so.2
      8277: 
      8277: 
      8277: calling init: /lib/i386-linux-gnu/libc.so.6
      8277: 
      8277: 
      8277: initialize program: ./a.out
      8277: 
      8277: 
      8277: transferring control: ./a.out
      8277: 
dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument
      8277: 
      8277: calling fini:  [0]
      8277: 
      8277: 
      8277: calling fini: /lib/i386-linux-gnu/libc.so.6 [0]
      8277: 
      8277: 
      8277: calling fini: /lib/ld-linux.so.2 [0]
      8277:

O patchelf --print-needed, objdump -p, o readelf -ada biblioteca em ambas as máquinas é quase idêntico e surpreendentemente sucinto. Eu fiz um diffe a única diferença entre a saída deb11 e deb13 foi que readelfas entradas LOCAL da tabela de símbolos de têm apenas uma coluna "Nome" preenchida em deb13. Isso pode não ser muito interessante. Aqui está a saída deb13:

$ patchelf --print-needed /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
libc.so.6
libm.so.6

$ objdump -p /opt/<package>/Cots/OPERATOR/libDSS_Operator.so

/opt/<package>/Cots/OPERATOR/libDSS_Operator.so:     file format elf32-i386

Program Header:
    LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
         filesz 0x000009e0 memsz 0x000009e0 flags r-x
    LOAD off    0x000009e0 vaddr 0x000019e0 paddr 0x000019e0 align 2**12
         filesz 0x000000dc memsz 0x000000dc flags rw-
 DYNAMIC off    0x00000a2c vaddr 0x00001a2c paddr 0x00001a2c align 2**2
         filesz 0x00000090 memsz 0x00000090 flags rw-

Dynamic Section:
  NEEDED               libc.so.6
  NEEDED               libm.so.6
  HASH                 0x00000094
  STRTAB               0x0000034c
  SYMTAB               0x0000015c
  STRSZ                0x00000121
  SYMENT               0x00000010
  REL                  0x00000470
  RELSZ                0x000001e8
  RELENT               0x00000008
  TEXTREL              0x00000000
  RELCOUNT             0x0000003c




$ readelf -a /opt/<package>/Cots/OPERATOR/libDSS_Operator.so 
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x658
  Start of program headers:          52 (bytes into file)
  Start of section headers:          2940 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         3
  Size of section headers:           40 (bytes)
  Number of section headers:         17
  Section header string table index: 14

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .hash             HASH            00000094 000094 0000c8 04   A  2   0  4
  [ 2] .dynsym           DYNSYM          0000015c 00015c 0001f0 10   A  3  14  4
  [ 3] .dynstr           STRTAB          0000034c 00034c 000121 00   A  0   0  1
  [ 4] .rel.dyn          REL             00000470 000470 0001e8 08   A  2   0  4
  [ 5] .text             PROGBITS        00000658 000658 000244 00  AX  0   0  4
  [ 6] .rodata           PROGBITS        000008a0 0008a0 000140 00   A  0   0 16
  [ 7] .data             PROGBITS        000019e0 0009e0 000040 00  WA  0   0 32
  [ 8] .got              PROGBITS        00001a20 000a20 00000c 04  WA  0   0  4
  [ 9] .dynamic          DYNAMIC         00001a2c 000a2c 000090 08  WA  3   0  4
  [10] .sbss             PROGBITS        00001abc 000abc 000000 00   W  0   0  1
  [11] .bss              NOBITS          00001abc 000abc 000000 00  WA  0   0  4
  [12] .comment          PROGBITS        00000000 000abc 000036 00      0   0  1
  [13] .note             NOTE            00000000 000af2 000014 00      0   0  1
  [14] .shstrtab         STRTAB          00000000 000b06 000076 00      0   0  1
  [15] .symtab           SYMTAB          00000000 000e24 000240 10     16  19  4
  [16] .strtab           STRTAB          00000000 001064 0000ca 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  D (mbind), p (processor specific)

There are no section groups in this file.

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000000 0x00000000 0x00000000 0x009e0 0x009e0 R E 0x1000
  LOAD           0x0009e0 0x000019e0 0x000019e0 0x000dc 0x000dc RW  0x1000
  DYNAMIC        0x000a2c 0x00001a2c 0x00001a2c 0x00090 0x00090 RW  0x4

 Section to Segment mapping:
  Segment Sections...
   00     .hash .dynsym .dynstr .rel.dyn .text .rodata 
   01     .data .got .dynamic 
   02     .dynamic 

Dynamic section at offset 0xa2c contains 13 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000004 (HASH)                       0x94
 0x00000005 (STRTAB)                     0x34c
 0x00000006 (SYMTAB)                     0x15c
 0x0000000a (STRSZ)                      289 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000011 (REL)                        0x470
 0x00000012 (RELSZ)                      488 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x00000016 (TEXTREL)                    0x0
 0x6ffffffa (RELCOUNT)                   60
 0x00000000 (NULL)                       0x0

Relocation section '.rel.dyn' at offset 0x470 contains 61 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
0000068f  00000008 R_386_RELATIVE   
0000069f  00000008 R_386_RELATIVE   
000006cb  00000008 R_386_RELATIVE   
000006db  00000008 R_386_RELATIVE   
000006f6  00000008 R_386_RELATIVE   
00000736  00000008 R_386_RELATIVE   
00000772  00000008 R_386_RELATIVE   
000007a7  00000008 R_386_RELATIVE   
000007b7  00000008 R_386_RELATIVE   
000007e3  00000008 R_386_RELATIVE   
000007f3  00000008 R_386_RELATIVE   
0000080e  00000008 R_386_RELATIVE   
0000084e  00000008 R_386_RELATIVE   
0000088a  00000008 R_386_RELATIVE   
000008a0  00000008 R_386_RELATIVE   
000008a4  00000008 R_386_RELATIVE   
000008a8  00000008 R_386_RELATIVE   
000008ac  00000008 R_386_RELATIVE   
000008b0  00000008 R_386_RELATIVE   
000008b4  00000008 R_386_RELATIVE   
000008c0  00000008 R_386_RELATIVE   
000008c4  00000008 R_386_RELATIVE   
000008c8  00000008 R_386_RELATIVE   
000008cc  00000008 R_386_RELATIVE   
000008d0  00000008 R_386_RELATIVE   
000008d4  00000008 R_386_RELATIVE   
000008e0  00000008 R_386_RELATIVE   
000008e4  00000008 R_386_RELATIVE   
000008e8  00000008 R_386_RELATIVE   
000008ec  00000008 R_386_RELATIVE   
000008f0  00000008 R_386_RELATIVE   
000008f4  00000008 R_386_RELATIVE   
00000900  00000008 R_386_RELATIVE   
00000904  00000008 R_386_RELATIVE   
00000908  00000008 R_386_RELATIVE   
0000090c  00000008 R_386_RELATIVE   
00000910  00000008 R_386_RELATIVE   
00000914  00000008 R_386_RELATIVE   
00000920  00000008 R_386_RELATIVE   
00000924  00000008 R_386_RELATIVE   
00000928  00000008 R_386_RELATIVE   
0000092c  00000008 R_386_RELATIVE   
00000930  00000008 R_386_RELATIVE   
00000934  00000008 R_386_RELATIVE   
00000940  00000008 R_386_RELATIVE   
00000944  00000008 R_386_RELATIVE   
00000948  00000008 R_386_RELATIVE   
0000094c  00000008 R_386_RELATIVE   
00000950  00000008 R_386_RELATIVE   
00000954  00000008 R_386_RELATIVE   
000019e0  00000008 R_386_RELATIVE   
000019e4  00000008 R_386_RELATIVE   
000019e8  00000008 R_386_RELATIVE   
000019ec  00000008 R_386_RELATIVE   
000019f0  00000008 R_386_RELATIVE   
000019f4  00000008 R_386_RELATIVE   
000019f8  00000008 R_386_RELATIVE   
000019fc  00000008 R_386_RELATIVE   
00001a00  00000008 R_386_RELATIVE   
00001a04  00000008 R_386_RELATIVE   
00000665  00000f01 R_386_32          000019e0   listOperators
No processor specific unwind information to decode

Symbol table '.dynsym' contains 31 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00000094     0 SECTION LOCAL  DEFAULT    1 .hash
     2: 0000015c     0 SECTION LOCAL  DEFAULT    2 .dynsym
     3: 0000034c     0 SECTION LOCAL  DEFAULT    3 .dynstr
     4: 00000470     0 SECTION LOCAL  DEFAULT    4 .rel.dyn
     5: 00000658     0 SECTION LOCAL  DEFAULT    5 .text
     6: 000008a0     0 SECTION LOCAL  DEFAULT    6 .rodata
     7: 000019e0     0 SECTION LOCAL  DEFAULT    7 .data
     8: 00001a20     0 SECTION LOCAL  DEFAULT    8 .got
     9: 00001a2c     0 SECTION LOCAL  DEFAULT    9 .dynamic
    10: 00001abc     0 SECTION LOCAL  DEFAULT   10 .sbss
    11: 00001abc     0 SECTION LOCAL  DEFAULT   11 .bss
    12: 00000000     0 SECTION LOCAL  DEFAULT   12 .comment
    13: 00000000     0 SECTION LOCAL  DEFAULT   13 .note
    14: 000007fc    61 FUNC    GLOBAL DEFAULT    5 op_inv_rev
    15: 000019e0    40 OBJECT  GLOBAL DEFAULT    7 listOperators
    16: 00001a2c     0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
    17: 000007c0    59 FUNC    GLOBAL DEFAULT    5 op10_rev
    18: 00000658    19 FUNC    GLOBAL DEFAULT    5 getListOperator
    19: 0000083c    57 FUNC    GLOBAL DEFAULT    5 op_inv2_rev
    20: 000006e4    61 FUNC    GLOBAL DEFAULT    5 op_inv
    21: 00000784    59 FUNC    GLOBAL DEFAULT    5 op3_rev
    22: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS __bss_start
    23: 00000724    57 FUNC    GLOBAL DEFAULT    5 op_inv2
    24: 00000760    35 FUNC    GLOBAL DEFAULT    5 op_refresh
    25: 000006a8    59 FUNC    GLOBAL DEFAULT    5 op10
    26: 0000066c    59 FUNC    GLOBAL DEFAULT    5 op3
    27: 00000878    35 FUNC    GLOBAL DEFAULT    5 op_refresh_rev
    28: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS _edata
    29: 00001a20     0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
    30: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS _end

Symbol table '.symtab' contains 36 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00000094     0 SECTION LOCAL  DEFAULT    1 .hash
     2: 0000015c     0 SECTION LOCAL  DEFAULT    2 .dynsym
     3: 0000034c     0 SECTION LOCAL  DEFAULT    3 .dynstr
     4: 00000470     0 SECTION LOCAL  DEFAULT    4 .rel.dyn
     5: 00000658     0 SECTION LOCAL  DEFAULT    5 .text
     6: 000008a0     0 SECTION LOCAL  DEFAULT    6 .rodata
     7: 000019e0     0 SECTION LOCAL  DEFAULT    7 .data
     8: 00001a20     0 SECTION LOCAL  DEFAULT    8 .got
     9: 00001a2c     0 SECTION LOCAL  DEFAULT    9 .dynamic
    10: 00001abc     0 SECTION LOCAL  DEFAULT   10 .sbss
    11: 00001abc     0 SECTION LOCAL  DEFAULT   11 .bss
    12: 00000000     0 SECTION LOCAL  DEFAULT   12 .comment
    13: 00000000     0 SECTION LOCAL  DEFAULT   13 .note
    14: 00000000     0 SECTION LOCAL  DEFAULT   14 .shstrtab
    15: 00000000     0 SECTION LOCAL  DEFAULT   15 .symtab
    16: 00000000     0 SECTION LOCAL  DEFAULT   16 .strtab
    17: 00000000     0 FILE    LOCAL  DEFAULT  ABS operator.c
    18: 00000658     0 NOTYPE  LOCAL  DEFAULT    5 gcc2_compiled.
    19: 000007fc    61 FUNC    GLOBAL DEFAULT    5 op_inv_rev
    20: 000019e0    40 OBJECT  GLOBAL DEFAULT    7 listOperators
    21: 00001a2c     0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
    22: 000007c0    59 FUNC    GLOBAL DEFAULT    5 op10_rev
    23: 00000658    19 FUNC    GLOBAL DEFAULT    5 getListOperator
    24: 0000083c    57 FUNC    GLOBAL DEFAULT    5 op_inv2_rev
    25: 000006e4    61 FUNC    GLOBAL DEFAULT    5 op_inv
    26: 00000784    59 FUNC    GLOBAL DEFAULT    5 op3_rev
    27: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS __bss_start
    28: 00000724    57 FUNC    GLOBAL DEFAULT    5 op_inv2
    29: 00000760    35 FUNC    GLOBAL DEFAULT    5 op_refresh
    30: 000006a8    59 FUNC    GLOBAL DEFAULT    5 op10
    31: 0000066c    59 FUNC    GLOBAL DEFAULT    5 op3
    32: 00000878    35 FUNC    GLOBAL DEFAULT    5 op_refresh_rev
    33: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS _edata
    34: 00001a20     0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
    35: 00001abc     0 OBJECT  GLOBAL DEFAULT  ABS _end

Histogram for bucket list length (total of 17 buckets):
 Length  Number     % of total  Coverage
      0  7          ( 41.2%)
      1  4          ( 23.5%)     23.5%
      2  5          ( 29.4%)     82.4%
      3  1          (  5.9%)    100.0%

No version information found in this file.

Displaying notes found in: .note
  Owner                Data size    Description
  01.01                0x00000000   NT_VERSION (version)

Reduzi um pouco a verbosidade patchelf --remove-rpathpara remover pesquisas desnecessárias, mas não houve nenhuma alteração em nenhuma das máquinas.

dynamic-linking
  • 1 respostas
  • 297 Views
Martin Hope
Fravadona
Asked: 2025-03-14 21:49:20 +0800 CST

Qual é a origem da opção -E do comando `realpath` no POSIX edição 8?

  • 7

O realpathutilitário de comando agora é definido pelo POSIX em sua edição 8 (2024): realpath — resolver um nome de caminho

realpath [-E|-e] arquivo

O utilitário realpath deve canonizar o nome do caminho especificado pelo operando do arquivo da seguinte forma:

Se uma chamada para a realpath()função com o caminho especificado como seu primeiro argumento for bem-sucedida, o caminho canonizado deverá ser o caminho que seria retornado por essa realpath()chamada. Caso contrário:

  • Se a opção -e for especificada, a canonização falhará.

  • Se a opção -E for especificada, então se uma chamada para a realpath()função com o caminho especificado como seu primeiro argumento encontrar uma condição de erro diferente de [ENOENT], a canonização falhará; se a chamada encontrar um erro [ENOENT], o realpath expandirá todos os links simbólicos que seriam encontrados em uma tentativa de resolver o caminho especificado usando o algoritmo especificado em XBD 4.16 Pathname Resolution, exceto que quaisquer <slash>caracteres finais que não sejam também <slash>caracteres iniciais serão ignorados. Se essa expansão for bem-sucedida e o prefixo do caminho do caminho expandido for resolvido para um diretório existente, o caminho canonizado será o caminho expandido. Em todos os outros casos, a canonização falhará. Se o caminho expandido não estiver vazio, não começar com um <slash>e tiver exatamente um componente de caminho, ele será tratado como se tivesse um prefixo de caminho de " ./".

  • Se nenhuma opção for especificada, o realpath canonizará o caminho especificado de uma maneira não especificada, de modo que o caminho absoluto resultante não contenha nenhum componente que faça referência a arquivos do tipo link simbólico e não contenha nenhum componente que seja ponto ou ponto-ponto.

Após a canonização bem-sucedida, o realpath gravará o nome do caminho canonizado, seguido por um <newline>caractere, na saída padrão.

Se a canonização falhar ou o caminho canonizado estiver vazio, nada será gravado na saída padrão, uma mensagem de diagnóstico será gravada no erro padrão e o realpath sairá com status diferente de zero.

[...]

Minha pergunta é: a -eopção de realpathjá é suportada pelo menos por GNU e Solaris, mas não consigo encontrar nenhuma menção à -Eopção em nenhuma realpathque eu pudesse verificar (macOS, FreeBSD, Solaris, GNU). O OpenGroup a inventou?

shell
  • 1 respostas
  • 122 Views
Martin Hope
sfzhang
Asked: 2025-03-14 17:35:49 +0800 CST

O usuário systemd saiu e removeu os semáforos

  • 5

Eu uso um systemdserviço para iniciar vários processos quando o Ubuntu 20.04 é inicializado.

# MyApp start app service
[Unit]
Description=MyApp start service
Requires=network-online.target
After=network-online.target

[Service] 
Type=simple
ExecStartPre=/bin/sleep 20
ExecStart=/etc/init.d/MyApp.sh start
ExecStop=/etc/init.d/MyApp.sh stop
LimitMEMLOCK=infinity
LimitCORE=infinity
RemainAfterExit=yes

User=admin

[Install]
#WantedBy=multi-user.target
#WantedBy=graphical.target
WantedBy=basic.target

Todos os meus processos iniciam após a inicialização do sistema. No entanto, após alguns minutos, o nível de usuário systemdsai e remove todos os semáforos criados pelos meus processos.

Parece que posso definir RemoveIPC=No configuration /etc/systemd/logind.confpara impedir que o usuário systemdremova os semáforos.

Mas por que o usuário systemdsaiu? Devo usar o comando sudo loginctl enable-linger adminpara impedir que ele saia?

Obrigado!

ubuntu
  • 1 respostas
  • 93 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