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-64403

林果皞's questions

Martin Hope
林果皞
Asked: 2019-06-22 14:02:01 +0800 CST

Como corrigir o konsole `\033[0m` não está funcionando a partir da segunda página de rolagem?

  • 2

Percebi que konsolehá problema para redefinir a cor na próxima página de rolagem, conforme captura de tela abaixo, execute com o comando for i in {1..100}; do echo "$i"; echo -en '\033[1;42m AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \033[0m'; echo -e 'next text'; done;:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Como você pode ver, o \033[0m get ignorado começou na 11ª linha, que é a próxima página da visualização da janela atual.

gnome-terminalsem esse problema., mas sou konsoleusuário e estou procurando uma solução para isso.

[ATUALIZAR]

Relatei um bug em https://bugs.kde.org/show_bug.cgi?id=409016

colors konsole
  • 2 respostas
  • 1127 Views
Martin Hope
林果皞
Asked: 2019-03-08 12:54:52 +0800 CST

tftp - Código de erro 1: arquivo não encontrado

  • 0

Eu preciso da sintaxe correta do tftp para obter e colocar o arquivo. Meu objetivo final é usar o tftp do busybox (esta deve ser a segunda pergunta), mas falhou mesmo tentando testar com o cliente tftp local do Ubuntu.

Como você pode ver abaixo, ftpnenhum problema, apenas tftptem problema. E este é o ip de loopback, portanto, não deve estar relacionado ao iptables (novamente, ftpsem problemas). Para evitar um possível problema de caminho longo, testo apenas com o diretório inicial.

xb@dnxb:/tmp$ grep anon_root /etc/vsftpd.conf
anon_root=/home/xiaobai/
xb@dnxb:/tmp$ cat /home/xiaobai/haha
7
xb@dnxb:/tmp$ ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:xiaobai): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get haha
local: haha remote: haha
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for haha (2 bytes).
226 Transfer complete.
2 bytes received in 0.00 secs (6.5541 kB/s)
ftp> 221 Goodbye.
xb@dnxb:/tmp$ tftp 127.0.0.1
tftp> get haha
Error code 1: File not found
tftp> get /home/xiaobai/haha
Error code 1: File not found
tftp> get /home/xiaobai/haha output
Error code 1: File not found
tftp> put /home/xiaobai/haha        
Error code 1: File not found
tftp> put haha
Error code 1: File not found
tftp> xb@dnxb:/tmp$ dpkg-query -W -f='${Description}\n\n${Homepage}\nMaintainer: ${Maintainer}\n\n' tftp
Trivial file transfer protocol client
 Tftp is the user interface to the Internet TFTP (Trivial File Transfer
 Protocol), which allows users to transfer files to and from a remote machine.
 The remote host may be specified on the command line, in which case tftp uses
 host as the default host for future transfers.

http://www.hcs.harvard.edu/~dholland/computers/netkit.html
Maintainer: Ubuntu Developers <[email protected]>

xb@dnxb:/tmp$

Então eu sigo esta resposta :

xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c get haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c get /home/xiaobai/haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c put haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c put /home/xiaobai/haha
usage: tftp host-name [port]
tftp> ^F
?Invalid command
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ 

E também esta resposta (comente ou não parece não ter efeito, eu fiz service vsftpd restartdepois de editado):

xb@dnxb:/tmp$ grep server_args /etc/xinetd.conf 
# server_args = -c -s /tftpboot
xb@dnxb:/tmp$ 

Poderia ser melhor se alguém pudesse responder sobre o tftp do busybox que tem uma opção diferente:

# busybox tftp                                    
BusyBox v1.22.1 bionic (2017-11-04 12:54 +0800) multi-call binary.

Usage: tftp [OPTIONS] HOST [PORT]

Transfer a file from/to tftp server

        -l FILE Local FILE
        -r FILE Remote FILE
        -g      Get file
        -p      Put file
busybox vsftpd
  • 1 respostas
  • 10372 Views
Martin Hope
林果皞
Asked: 2019-02-15 07:20:52 +0800 CST

Como extrair os “frames armazenados” sem depender de fps?

  • 1

Percebi se extraio frames com este comando:

ffmpeg -i sample_nosound.mp4 $filename%03d.jpg

Ele irá extrair depende de fps por padrão. ffmpeg -i sample_nosound.mp4mostra que este vídeo tem 6 fps, então ele extraiu 1630 arquivos de quadros jpg, que 1630/6 = 271,6 segundos equivalentes à duração total do vídeo de 4:32.

Mas o tamanho total de 1630 quadros jpg é de 13 MB:

$ du -h extracted_jpg_folder
13M      extracted_jpg_folder

, enquanto o tamanho do arquivo do mp4 é de 1,8 MB, muito menor que o tamanho total dos quadros:

$ ls -la sample_nosound.mp4
-rw-rw-r-- 1 xiaobai xiaobai 1814889 Feb  13 15:42 'sample_nosound.mp4'

Isso significa que o ffmpeg extrai quadros consultando informações de fps com quadros duplicados.

Portanto, minha pergunta é: como fazer ffmpeg extrair quadros por "quadros armazenados" sem depender de fps?

Espero que eu possa obter o tamanho total dos quadros que é quase equivalente ao tamanho dos arquivos mp4.

Não espero um tamanho de arquivo de correspondência exata, pois o mp4 pode conter alguns metadados.

Saída de ffprobe -i sample_nosound.mp4:

ffprobe version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample_nosound.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:04:32.00, start: 0.000000, bitrate: 53 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt470bg/bt709/bt709), 640x330 [SAR 1:1 DAR 64:33], 53 kb/s, 6 fps, 6 tbr, 12288 tbn, 12 tbc (default)
    Metadata:
      handler_name    : VideoHandler
video ffmpeg
  • 1 respostas
  • 592 Views
Martin Hope
林果皞
Asked: 2018-04-28 07:52:15 +0800 CST

Qual é o propósito de 47 linhas em branco em arquivos de localidade X11?

  • 2

Percebi que há 47 linhas em branco no topo dos arquivos de localidade:

xb@dnxb:/usr/share/X11/locale$ hexdump -Cv locale.alias | head
00000000  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000010  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000020  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 23  |...............#|
00000030  0a 23 09 54 68 69 73 20  66 69 6c 65 20 63 6f 6e  |.#.This file con|
00000040  74 61 69 6e 73 20 61 6c  69 61 73 20 6e 61 6d 65  |tains alias name|
00000050  20 6f 66 20 6c 6f 63 61  6c 65 2e 0a 23 09 45 61  | of locale..#.Ea|
00000060  63 68 20 61 6c 69 61 73  20 6e 61 6d 65 20 69 73  |ch alias name is|
00000070  20 64 65 73 63 72 69 62  65 64 20 77 69 74 68 69  | described withi|
00000080  6e 20 6f 6e 65 20 6c 69  6e 65 2e 0a 23 09 54 68  |n one line..#.Th|
00000090  65 20 66 69 72 73 74 20  77 6f 72 64 20 69 73 20  |e first word is |
xb@dnxb:/usr/share/X11/locale$ hexdump -Cv locale.dir | head
00000000  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000010  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000020  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 23  |...............#|
00000030  0a 23 09 54 68 69 73 20  66 69 6c 65 20 63 6f 6e  |.#.This file con|
00000040  74 61 69 6e 73 20 6c 6f  63 61 6c 65 20 64 61 74  |tains locale dat|
00000050  61 62 61 73 65 20 66 69  6c 65 20 6e 61 6d 65 73  |abase file names|
00000060  0a 23 09 54 68 65 20 66  69 72 73 74 20 77 6f 72  |.#.The first wor|
00000070  64 20 69 73 20 74 68 65  20 6c 6f 63 61 6c 65 20  |d is the locale |
00000080  64 61 74 61 62 61 73 65  20 66 69 6c 65 20 6e 61  |database file na|
00000090  6d 65 20 61 6e 64 0a 23  09 74 68 65 20 73 65 63  |me and.#.the sec|
xb@dnxb:/usr/share/X11/locale$ hexdump -Cv compose.dir | head                                   
00000000  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000010  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000020  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 23  |...............#|
00000030  0a 23 09 54 68 69 73 20  66 69 6c 65 20 63 6f 6e  |.#.This file con|
00000040  74 61 69 6e 73 20 63 6f  6d 70 6f 73 65 20 74 61  |tains compose ta|
00000050  62 6c 65 20 66 69 6c 65  20 6e 61 6d 65 73 2e 0a  |ble file names..|
00000060  23 09 54 68 65 20 66 69  72 73 74 20 77 6f 72 64  |#.The first word|
00000070  20 69 73 20 74 68 65 20  63 6f 6d 70 6f 73 65 20  | is the compose |
00000080  74 61 62 6c 65 20 66 69  6c 65 20 6e 61 6d 65 0a  |table file name.|
00000090  23 09 61 6e 64 20 74 68  65 20 73 65 63 6f 6e 64  |#.and the second|
xb@dnxb:/usr/share/X11/locale$ hexdump -Cv C/XLC_LOCALE | head
00000000  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000010  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 0a  |................|
00000020  0a 0a 0a 0a 0a 0a 0a 0a  0a 0a 0a 0a 0a 0a 0a 23  |...............#|
00000030  20 20 58 4c 6f 63 61 6c  65 20 44 61 74 61 62 61  |  XLocale Databa|
00000040  73 65 20 53 61 6d 70 6c  65 20 66 6f 72 20 43 2e  |se Sample for C.|
00000050  0a 23 20 0a 0a 23 20 0a  23 20 09 58 4c 43 5f 46  |.# ..# .# .XLC_F|
00000060  4f 4e 54 53 45 54 20 63  61 74 65 67 6f 72 79 0a  |ONTSET category.|
00000070  23 20 0a 58 4c 43 5f 46  4f 4e 54 53 45 54 0a 23  |# .XLC_FONTSET.#|
00000080  20 09 66 73 30 20 63 6c  61 73 73 20 28 37 20 62  | .fs0 class (7 b|
00000090  69 74 20 41 53 43 49 49  29 0a 66 73 30 09 7b 0a  |it ASCII).fs0.{.|
xb@dnxb:/usr/share/X11/locale$ 

Provavelmente não rolarei para baixo se eu apenas vio arquivo e ver a página em branco, só notei isso se eu cat. Eu verifico esta especificação , mas parece não mencionar nada sobre 47 linhas em branco. Qual é o propósito dessas 47 linhas em branco no início dos arquivos de localidade?

x11 locale
  • 1 respostas
  • 142 Views
Martin Hope
林果皞
Asked: 2018-03-10 04:20:48 +0800 CST

Por que nenhuma versão não interativa do bashrc?

  • 4

Pelo que entendi, um daemon é um processo em segundo plano, mas o daemon requer um arquivo de configuração exclusivo para definir a variável de ambiente.

Por exemplo, o daemon do Hadoop requer hadoop-env.sh para definir a variável de ambiente JAVA_HOME, você não pode simplesmente obter a variável de ~/.bashrc.

O motivo é porque o daemon como um processo em segundo plano significa que não é interativo, enquanto ~/.bashrc é usado apenas em sessões interativas, para evitar alias cp='cp -i'casos .

E o mais recente ~/.bashrctem o safe guard em cima do arquivo não permite chamador não interativo, ou seja, sem -iopção retornará antes:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Isso me faz pensar por que o bashrc não divide os arquivos de configuração em 3 grupos, como:

  • ~/.bashrc_interactive

  • ~/.bashrc_non_interactive

  • ~/.bashrc_global #(interativo e não interativo)

Portanto, o usuário pode simplesmente definir ou JAVA_HOME, e não há necessidade de adicionar essa variável de ambiente em cada arquivo daemon repetidamente.~/.bashrc_non_interactive~/.bashrc_global

Existe alguma razão ou restrição de por que o bashrc não suporta não interativo dessa maneira ou de qualquer outra maneira? OU estou entendendo mal alguns conceitos?

environment-variables bashrc
  • 2 respostas
  • 2773 Views
Martin Hope
林果皞
Asked: 2018-02-28 06:24:27 +0800 CST

Como é possível que 8 blocos sejam alocados, mas o tamanho do arquivo é 0?

  • 9

Alguém me perguntou em outro site sobre esta questão, ou seja, um arquivo chamado "abc.dat" tem 0 tamanho de arquivo, mas 8 blocos, e esta é a saída que peço a ele para me fornecer (algum texto foi traduzido do chinês para o inglês):

$ cp abc.dat abc2.dat; ls -ls abc2.dat #try to copy, it still 8 blocks but 0 byte
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:39 abc2.dat 

8 -rw-rw-r-- 1 rokeabbey rokeabbey 0 18 de setembro 19:11 abc.dat #desculpe, esta pode ser a saída errada extra que ele adicionou

$ stat abc.dat
  File: 'abc.dat'
  Size: 0           Blocks: 16          IO Block: 4096   regular empty file
Device: 32h/50d      Inode: 3715853    Links: 1
Access: (0664/-rw-rw-r--)  Uid:( 1000/rokeabbey)   Gid:( 1000/rokeabbey)
Access: 2018-02-26 21:13:57.640639992 +0800
Modify: 2017-09-18 19:11:42.221533011 +0800
Change: 2017-09-18 19:11:42.221533011 +0800
 Birth: -

$ touch abc3.dat ; ls -sl | grep abc #try to create new empty file, it still 8 blocks by default
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:39 abc2.dat
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:40 abc3.dat
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Sep  18 19:11 abc.dat

Eu aprendi um pouco sobre arquivo esparso, metadados de arquivo, casos de links simbólicos, mas nenhum desses casos causará tamanho de arquivo de 0 byte com 8 blocos. Existe alguma configuração de sistemas de arquivos, como tamanho mínimo de bloco para qualquer arquivo?

Ele me disse que seus sistemas são Ubuntu 16.04 e ext4.

[ATUALIZAR]

$ df -Th /home/rokeabbey
/home/rokeabbey/.Private ecryptfs  138G   39G   92G   30% /home/rokeabbey

[ATUALIZAÇÃO] Posso reproduzir com ecryptfs

xb@dnxb:/tmp/test$ sudo mkdir /opt/data
xb@dnxb:/tmp/test$ sudo apt-get install ecryptfs-utils
...
xb@dnxb:/tmp/test$ sudo mount -t ecryptfs /opt/data /opt/data
Passphrase: 
...
Selection [aes]: 1
...
Selection [16]: 1
Enable plaintext passthrough (y/n) [n]: y
Enable filename encryption (y/n) [n]: y
...
Would you like to proceed with the mount (yes/no)? : yes
...
in order to avoid this warning in the future (yes/no)? : no 
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
xb@dnxb:/tmp/test$ l /opt/data
total 8.0K
52953089 drwxr-xr-x 9 root root ? 4.0K Feb  27 23:16 ../
56369402 drwxr-xr-x 2 root root ? 4.0K Feb  27 23:16 ./
xb@dnxb:/tmp/test$ sudo touch /opt/data/testing
xb@dnxb:/tmp/test$ less /opt/data/testing      
xb@dnxb:/tmp/test$ sudo umount /opt/data
xb@dnxb:/tmp/test$ ls -ls /opt/data
total 8
8 -rw-r--r-- 1 root root 8192 Feb  27 23:42 ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME--
xb@dnxb:/tmp/test$ less /opt/data/ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME-- 
"/opt/data/ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME--" may be a binary file.  See it anyway? 
xb@dnxb:/tmp/test$ sudo mount -t ecryptfs /opt/data /opt/data
Passphrase: 
Select cipher: 
...
Selection [aes]: 1   
...
Selection [16]: 1
Enable plaintext passthrough (y/n) [n]: y
Enable filename encryption (y/n) [n]: y
...
Would you like to proceed with the mount (yes/no)? : yes
...
in order to avoid this warning in the future (yes/no)? : no 
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
xb@dnxb:/tmp/test$ ls -ls /opt/data
total 8
8 -rw-r--r-- 1 root root 0 Feb  27 23:42 testing
xb@dnxb:/tmp/test$
files filesystems
  • 2 respostas
  • 1585 Views
Martin Hope
林果皞
Asked: 2018-01-20 08:18:00 +0800 CST

O número fd de vários shells é fixo?

  • 2

Digamos:

xb@dnxb:/tmp$ echo 'ls -l /proc/$$/fd | grep a.sh' > a.sh; \
> while IFS='' read -r f; do \
> echo "$f"; "$f" a.sh; \
> done < <(tail -n +2 /etc/shells)
/bin/sh
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 10 -> /tmp/a.sh
/bin/dash
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 10 -> /tmp/a.sh
/bin/bash
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 255 -> /tmp/a.sh
/bin/rbash
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 255 -> /tmp/a.sh
/bin/zsh
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 11 -> /tmp/a.sh
/usr/bin/zsh
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 11 -> /tmp/a.sh
/bin/ksh93
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 10 -> /tmp/a.sh
/bin/rksh93
lr-x------ 1 xiaobai xiaobai 64 Jan  20 00:09 10 -> /tmp/a.sh
xb@dnxb:/tmp$ 

O bash sempre fixou o número fd 255 e o zsh fixou o número fd 11 por padrão?

Eu faço esta pergunta porque preciso extrair o caminho completo executado de qualquer processo shell. Eu me pergunto se posso codificar meu script para referir esses números fixos ou não.

Observe que isso é para script pessoal e não significa executar em negócios críticos, então não estou procurando 100% confiável, mas o número fd é fixo na maioria dos casos ?

[ATUALIZAR]:

A razão pela qual eu não analiso o cmdlineé porque:

xb@dnxb:~/Downloads$ cat foo.sh 
#!/bin/bash
cat "/proc/$$/cmdline" | tr '\0' '\n'
readlink -f /proc/$$/fd/255

xb@dnxb:~/Downloads$ bash --norc foo.sh --norc
bash
--norc
foo.sh
--norc
/home/xiaobai/Downloads/foo.sh
xb@dnxb:~/Downloads$ 

Como você pode ver, só é fdpossível fornecer o caminho completo /home/xiaobai/Downloads/foo.sh, mas não o arquivo cmdline. E o script não pode distinguir foo.shou --norcé um caminho ou uma opção, pois foo.shpode aparecer em qualquer posição de opção, a menos que eu faça uma verificação feia, como não começa com --.

Embora fdnão tenha nenhum problema em produzir o caminho completo correto, mesmo eu bash --norc foo.sh --norc foo2.sh.

De qualquer forma, acabei de perceber que minha tarefa não precisa verificar isso, pois notei que nenhum processo do sistema, exceto o processo personalizado, é herdado do shell. Mas ainda qualquer resposta ajudará o futuro leitor.

bash shell
  • 2 respostas
  • 249 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