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

Just a learner's questions

Martin Hope
Just a learner
Asked: 2025-01-09 04:15:10 +0800 CST

Como encerrar scripts de shell automaticamente após 1 minuto sem saída

  • 13

Preciso executar vários scripts de shell sequencialmente (s1.sh, s2.sh, s3.sh) com o seguinte requisito:

  • Se um script não produzir nenhuma saída (stdout ou stderr) por 1 minuto, ele deve ser encerrado
  • Após o término, o próximo script na sequência deve ser executado automaticamente
  • Isso deve continuar até que todos os scripts sejam processados

Situação atual:

  • Os scripts não saem sozinhos quando sua tarefa é concluída
  • Atualmente, monitoro manualmente cada script e pressiono Ctrl-cquando não percebo nenhuma saída por um tempo
  • É preciso automatizar esta intervenção manual

Exemplo de fluxo de trabalho:

  1. Execute s1.sh
  2. Se s1.sh ficar em silêncio por 1 minuto → encerre-o → execute s2.sh
  3. Se s2.sh ficar em silêncio por 1 minuto → encerre-o → execute s3.sh
  4. ...e assim por diante

Abordagem potencial que estou considerando: Estou pensando em redirecionar stdout e stderr para um arquivo e verificar o tempo de modificação do arquivo a cada segundo. Se o arquivo não tiver sido gravado por 1 minuto, eu poderia assumir que o script não tem saída e matá-lo. No entanto, não tenho certeza se essa abordagem é viável ou se há soluções melhores.

Alguém implementou algo parecido? Obrigado.

bash
  • 2 respostas
  • 856 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
Just a learner
Asked: 2020-01-16 05:54:05 +0800 CST

O utilitário "join" relata: o arquivo não está classificado, mas na verdade está classificado

  • 0

Eu tenho dois arquivos t1e t2.

root@localhost:~#
root@localhost:~# cat t1
udp  UNCONN  0  0    0.0.0.0:68      0.0.0.0:*  users:(("dhclient",pid=479,fd=7))     479
tcp  LISTEN  0  128  127.0.0.1:6060  0.0.0.0:*  users:(("gggg-ruit",pid=24968,fd=5))  24968
root@localhost:~#
root@localhost:~# cat t2
root        88  0.0  0.0      0     0 ?        I<   Jan06   0:00 [scsi_tmf_0]
root        96  0.0  0.0      0     0 ?        I<   Jan06   0:00 [ipv6_addrconf]
root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root     24968  0.7  5.2 112488 53472 ?        Sl   Jan12  30:52 /usr/local/bin/gggg-ruit -singleInstance :44444

Eu quero juntá-los na 8ª coluna de t1 e na 2ª coluna de t2. Já os tenho em ordem. Vamos provar isso.

root@localhost:~# awk '{print $8}' t1
479
24968
root@localhost:~# awk '{print $2}' t2
88
96
24965
24968

Agora, quando eu joinos, recebi o seguinte erro.

root@localhost:~# join -1 8 -2 2 -o 2.1,2.2,1.1,1.2,1.5,1.6,2.11 t1 t2
join: t2:3: is not sorted: root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root@localhost:~#

Por que me diz que t2 não está classificado na linha 3? Como você pode ver, já foi classificado na coluna de junção.

text-processing text-formatting
  • 1 respostas
  • 238 Views
Martin Hope
Just a learner
Asked: 2020-01-13 10:56:23 +0800 CST

Existe algum motivo para usar essa função read_char personalizada em vez do comando read interno?

  • 1

Eu não sou bom em bash e Linux. Estou lendo um script e encontrei a seguinte função.

get_char()
{
    SAVEDSTTY=`stty -g`
    stty -echo
    stty cbreak
    dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -raw
    stty echo
    stty $SAVEDSTTY
}

Basicamente, ele é usado para implementar Pressione qualquer tecla para continuar um recurso como este.

echo "Press any key to continue!"
char=`get_char`

Eu sei que você pode usar o readcomando embutido para implementar isso. Por exemplo:

read -rsn1 -p "Press any key to continue"

Existe algum motivo para usar esta função em vez do readcomando embutido?

shell-script read
  • 1 respostas
  • 136 Views
Martin Hope
Just a learner
Asked: 2020-01-09 02:52:34 +0800 CST

Por que minhas cores não aparecem em todos os terminais?

  • 1

Tenho o seguinte trecho de código.

bold=''
reset=$(echo -en '\033[0m')
black=$(echo -en '\e[1;30m')
magenta=$(echo -en '\033[00;35m')
blue=$(echo -en '\e[1;34m')
cyan=$(echo -en '\e[1;36m')
green=$(echo -en '\e[1;32m')
orange=$(echo -en '\e[1;33m')
purple=$(echo -en '\e[1;35m')
red=$(echo -en '\e[1;31m')
white=$(echo -en '\e[1;37m')
yellow=$(echo -en '\e[1;33m')
lime_yellow=$(echo -en '\e[1;33m')
power_blue=$(echo -en '\e[1;34m')
blink=$(echo -en '\e[1;31m')
reverse=$(echo -en '\e[1;31m')
underline=$(echo -en '\e[1;31m')

if [ -x /usr/bin/tput ] && tput setaf 1 &>/dev/null; then
    echo "tput color is supported."
    tput sgr0 # Reset colors
    bold=$(tput bold)
    reset=$(tput sgr0)
    black=$(tput setaf 0)
    magenta=$(tput setaf 5)
    blue=$(tput setaf 33)
    cyan=$(tput setaf 37)
    green=$(tput setaf 64)
    orange=$(tput setaf 166)
    purple=$(tput setaf 125)
    red=$(tput setaf 124)
    white=$(tput setaf 15)
    yellow=$(tput setaf 136)
    lime_yellow=$(tput setaf 190)
    power_blue=$(tput setaf 153)
    blink=$(tput blink)
    reverse=$(tput smso)
    underline=$(tput smul)
else
    echo "tput color is not supported. Use old school colors."
fi

echo ${red}RED${green}GREEN${yellow}YELLOW${blue}BLUE${purple}PURPLE${cyan}CYAN${white}WHITE${reset}

Basicamente, existem dois tipos de cores, tputgeradas ou os antigos caracteres de escape como \e[1;32m. Como o tputtipo é mais interessante, por exemplo, ele suporta piscar e sublinhar, o código usa a tputcor do tipo, se possível. Aqui está uma imagem para provar que funciona como esperado no ambiente GUI do Oracle Linux 7.6 (como RedHat ou CentOS).

insira a descrição da imagem aqui

Quando executo de outros terminais, não funciona. Por exemplo, abaixo está o instantâneo ao executar no MobaXterm.

insira a descrição da imagem aqui

Também tentei puttye também não funciona. Tem algo errado com meu código?


Atualizar

Executei echo $TERMem cada um dos terminais e abaixo está o resultado.

Oracle Linux com ambiente Desktop (trabalhos em cores)
Saída: xterm-256color

MobaXterm no Windows (a cor não funciona)
Saída: xterm

massa no Windows (a cor não funciona)
Saída: xterm
terminal gnome
  • 3 respostas
  • 2025 Views
Martin Hope
Just a learner
Asked: 2019-08-29 23:24:40 +0800 CST

De onde vem o último caractere de nova linha no resultado deste sed?

  • 7

Estou aprendendo os diferentes comandos do sed e fiz alguns experimentos. O comando que estou tentando é:

root:[~]# seq 7 | sed -n '1~2H; 2~2{G;p}'
2

1
4

1
3
6

1
3
5
root:[~]#

Analisei o comando e para mim o último caractere de nova linha após o número 5não deveria existir. Abaixo segue minha análise.

insira a descrição da imagem aqui

Com base na minha análise, a saída deve ser as células com o fundo vermelho. Como você pode ver, não há último caractere de nova linha. Onde estou errado? Desde já, obrigado.

sed newlines
  • 2 respostas
  • 306 Views
Martin Hope
Just a learner
Asked: 2019-08-28 13:43:58 +0800 CST

Existem diferenças entre os comandos "i text" e "i\ ...." do Gnu sed? [duplicado]

  • 0
Essa pergunta já tem respostas aqui :
Barra invertida extra necessária na primeira nova linha anexada no sed (2 respostas)
Fechado há 3 anos .

Abaixo está um trecho da documentação do Gnu sed em https://www.gnu.org/software/sed/manual/sed.html

i text
insert text before a line. This is a GNU extension to the
standard i command - see below for details.

i\
text
Immediately output the lines of text which follow this command.

A redação dessas duas sintaxes é bastante diferente. No passado, eu achava que eles tinham exatamente o mesmo comportamento e é só que a sintaxe é diferente. Eu fiz um monte de experimentos e todos os testes dão o mesmo resultado. Quero confirmar, há alguma diferença entre essas duas sintaxes? Desde já, obrigado.

sed
  • 1 respostas
  • 50 Views
Martin Hope
Just a learner
Asked: 2019-08-26 11:14:15 +0800 CST

/usr/bin/truncate: lista de argumentos muito longa

  • 2

Eu quero usar o truncatecomando para criar um grande número de pequenos arquivos para teste. Eu tentei o comando com um pequeno número de arquivos (100) e funcionou. Quando alterei o número para 1000000, ele relata um erro:

root:[~/data]# truncate -s 1k {1..100}
root:[~/data]# rm -rf *
root:[~/data]# truncate -s 1k {1..1000000}
-bash: /usr/bin/truncate: Argument list too long
root:[~/data]#

Como posso resolvê-lo? Eu tenho uma sensação de que xargspoderia ser usado, mas não posso fazê-lo funcionar.

bash files
  • 2 respostas
  • 540 Views
Martin Hope
Just a learner
Asked: 2019-08-25 07:14:49 +0800 CST

O que são esses diretórios "host"?

  • 0

Estou usando o Oracle Linux 7.6, que é uma distribuição baseada no RHEL 7.6. O teste a seguir deve ser o mesmo no RHEL 7.6 ou em outras distribuições baseadas no RHEL 7.6.

Estou executando o servidor Oracle Linux 7.6 no VMware Workstation no Windows 10. O que estou tentando fazer é adicionar um disco à máquina virtual convidada do Linux sem reinicializar o servidor Linux. Eu pesquisei e encontrei esta página: https://rahsupport.wordpress.com/2017/08/10/vmware-add-disk-to-linux-without-rebooting-the-vm/ . Basicamente, o que ele faz é:

  • Adicione o disco do VMware Workstation à VM do Linux
  • Vamos para/sys/class/scsi_host/
  • Correecho '- - -' > host1/scan
  • Em seguida, executando fdisk -l, você pode ver o disco recém-adicionado

Testei no meu ambiente. Existem três desses diretórios de host e cada um deles possui um scanarquivo:

root:[/sys/class/scsi_host]# ls -la
total 0
drwxr-xr-x.  2 root root 0 Aug 24 22:49 .
drwxr-xr-x. 54 root root 0 Aug 24 22:49 ..
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host0 -> ../../devices/pci0000:00/0000:00:07.1/ata1/host0/scsi_host/host0
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host1 -> ../../devices/pci0000:00/0000:00:07.1/ata2/host1/scsi_host/host1
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host2 -> ../../devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2
root:[/sys/class/scsi_host]#
root:[/sys/class/scsi_host]# ls -la */scan
--w-------. 1 root root 4096 Aug 24 22:50 host0/scan
--w-------. 1 root root 4096 Aug 24 22:50 host1/scan
--w-------. 1 root root 4096 Aug 24 22:50 host2/scan
root:[/sys/class/scsi_host]#

Originalmente, o servidor Linux não pode reconhecer o disco:

root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

Mas quando eu executo echo '- - -' > host0/scan, o disco apareceu:

root:[/sys/class/scsi_host]# echo '- - -' > host0/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

root:[/sys/class/scsi_host]# 

Reverti minha VM Linux ao seu estado original para testar novamente. Desta vez mostrou que echo '- - -' > host1/scannão funciona, mas echo '- - -' > host2/scanfunciona.

root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris
root:[/sys/class/scsi_host]# echo '- - -' > host1/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris
root:[/sys/class/scsi_host]# echo '- - -' > host2/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

root:[/sys/class/scsi_host]#

Minha pergunta é: quais são esses diretórios de host ? Por que echo '- - -' > host0/scane echo '- - -' > host2/scanfará o servidor Linux reconhecer o disco, mas echo '- - -' > host1/scannão consegue?

Btw, eu sou muito novo no Linux e ainda aprendendo.

linux virtual-machine
  • 1 respostas
  • 459 Views
Martin Hope
Just a learner
Asked: 2019-08-23 03:17:50 +0800 CST

Quais são as diferenças entre as atualizações da lista do yum e os obsoletos da lista do yum?

  • 1

O documento afirma:

yum lista obsoleta

Liste os pacotes instalados no sistema que estão obsoletos por pacotes em qualquer repositório yum listado no arquivo de configuração.

atualizações da lista yum

Liste todos os pacotes com atualizações disponíveis nos repositórios yum.

Pelo que entendi, se um pacote tem atualização disponível, ele está obsoleto, certo? Então, quais são as diferenças entre eles?

yum software-updates
  • 1 respostas
  • 2065 Views
Martin Hope
Just a learner
Asked: 2019-08-21 12:56:54 +0800 CST

Como mudar para o terminal virtual quando não há GUI instalada em um servidor Linux?

  • 0

Estou tentando entender terminal, console, tty, terminal virtual, emulador de terminal e esse tipo de coisa. Abaixo está a topologia do meu ambiente. Há um servidor Linux e um PC com Windows 10. Eu uso puttyno PC e me conecto ao servidor Linux. Neste caso, parece ctrl + alt + f1~6que não pode me levar a outros terminais virtuais. Eu sei que se o servidor Linux tiver a GUI instalada, posso pressionar ctrl + alt + f1~6quando estiver conectado diretamente ao servidor (por exemplo, tenho um teclado e um monitor conectados a ele). Minha pergunta é:

  • Posso usar vários terminais virtuais na minha topologia?
  • Se o servidor Linux tiver uma GUI instalada (como o Gnome), posso usar vários terminais virtuais na mesma topologia (conectar através de SSH)?
  • Nesta topologia, é puttyum terminal? Uma consola? Ou um emulador de terminal?

Na verdade, li vários artigos e seções relacionadas em livros diferentes. Parece que pessoas diferentes introduzem esses conceitos um pouco diferentes e ainda estou confuso. IMO, esta é a parte mais difícil da minha jornada de aprendizado do Linux.

+---------------------+
|                     |
|                     |
|     Linux Server    |
| (No GUI installed)  |
|                     |
+-----------+---------+
            ^
            |
            | SSH
            |
 +----------+--------+
 |          |        |
 |      +---+---+    |
 |      | Putty |    |
 |      +-------+    |
 |                   |
 |    Windows 10 PC  |
 |                   |
 +-------------------+
terminal tty
  • 2 respostas
  • 2079 Views
Martin Hope
Just a learner
Asked: 2019-08-17 05:51:52 +0800 CST

O que significa para uma pasta ter permissão suid? [duplicado]

  • 3
Essa pergunta já tem resposta aqui :
SUID não tem efeito em diretórios com Linux (1 resposta)
Fechado há 3 anos .

Eu sei o que significa para um arquivo ter permissão suid. Isso significa que quando outros usuários têm permissão de execução para ele, eles executam como o proprietário do arquivo. Mas o que significa quando uma pasta tem permissão suid? Fiz alguns testes e não parece nada de especial para a pasta. Alguém poderia ajudar a esclarecer um pouco? Obrigado.

Estou usando Oracle Linux 7.6.

root:[~]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
root:[~]#

Abaixo está meu teste em um servidor recém-instalado.

root:[~]# pwd
/root
root:[~]# ls -lad /root
dr-xr-x---. 9 root root 4096 Aug 16 22:07 /root
root:[~]# mkdir test
root:[~]# ls -lad test
drwxr-xr-x. 2 root root 4096 Aug 16 22:07 test
root:[~]#
root:[~]# useradd a
root:[~]# passwd a
Changing password for user a.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
root:[~]# chmod u+s test
root:[~]#
root:[~]# su - a
[a@localhost ~]$ cd /root/test
-bash: cd: /root/test: Permission denied
[a@localhost ~]$ cd /root
-bash: cd: /root: Permission denied
[a@localhost ~]$ logout
root:[~]#
root:[~]# ls -lad /root
dr-xr-x---. 10 root root 4096 Aug 16 22:07 /root
root:[~]# chmod o+x /root
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:08:54 CST 2019 on pts/0
[a@localhost ~]$ cd /root/test
[a@localhost test]$
[a@localhost test]$ pwd
/root/test
[a@localhost test]$ ls -la .
total 8
drwsr-xr-x.  2 root root 4096 Aug 16 22:07 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
[a@localhost test]$ touch file1
touch: cannot touch ‘file1’: Permission denied
[a@localhost test]$ logout
root:[~]#
root:[~]# chmod o+w test/
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:09:31 CST 2019 on pts/0
[a@localhost ~]$
[a@localhost ~]$ cd /root/test
[a@localhost test]$ touch file1
[a@localhost test]$ ls -la
total 8
drwsr-xrwx.  2 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--.  1 a    a       0 Aug 16 22:11 file1
[a@localhost test]$ mkdir folder1
[a@localhost test]$ ls -la
total 12
drwsr-xrwx.  3 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--.  1 a    a       0 Aug 16 22:11 file1
drwxrwxr-x.  2 a    a    4096 Aug 16 22:11 folder1
[a@localhost test]$

Como você pode ver, parece que os arquivos e pastas aem que o usuário criou /root/testnão herdaram o proprietário e o grupo dele. O proprietário e o grupo são ae não root. Há algum problema com meus testes? Sou novo no Linux.

permissions suid
  • 2 respostas
  • 583 Views
Martin Hope
Just a learner
Asked: 2019-08-13 08:03:46 +0800 CST

Por que o resultado de "dir" não tem destaque?

  • -1

Estou no Oracle Linux.

[root@ol76 systemd]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
[root@ol76 systemd]#

Por que o resultado de lstem destaque, mas dirnão tem?

insira a descrição da imagem aqui

linux bash
  • 1 respostas
  • 41 Views
Martin Hope
Just a learner
Asked: 2019-08-11 03:33:21 +0800 CST

Quais são as diferenças entre ifdown e "ip link set .. .down"?

  • 1

Fiz alguns testes abaixo. Parece ifdown ens32que não derrubou a interface. E ip linkainda mostrar UP. Apenas ip link set ens32 downtraz a interface para baixo. Então qual é o problema aqui? Por que ifdown não pode derrubar a interface?

root:[~]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
root:[~]# 
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# ifdown ens32
Device 'ens32' successfully disconnected.
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# ip link set ens32 down
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# 
linux rhel
  • 2 respostas
  • 7003 Views
Martin Hope
Just a learner
Asked: 2019-05-07 10:25:46 +0800 CST

wget baixar arquivos de uma lista de arquivos, como especificar nomes para cada um dos arquivos baixados?

  • 5

Ao baixar um único arquivo, podemos usar a -Oopção do wget para especificar o nome do arquivo. Quando estou baixando URLs em um arquivo usando wget -i filelist.txt(filelist.txt contém lista de URLs que quero baixar), como posso construir filelist.txt para que cada arquivo seja renomeado conforme é baixado?

Para Ex, se o filelist.txt contiver o seguinte conteúdo:

--output-document=1.jpg http://images2.example.com/image1.jpg
--output-document=2.jpg http://images2.example.com/image2.jpg

É possível baixar image1.jpge salvar como 1.jpg, image2.jpgas 2.jpg?


Editar

Eu sei que posso usar script simples ou técnicas de manipulação de texto para criar vários comandos wget e cada um deles baixa um único URL e grava em um arquivo de saída. Eu não testei, mas isso parece mais lento para mim e quero saber se existe alguma maneira de baixar todos os arquivos usando um único processo wget.

filenames rename
  • 2 respostas
  • 5869 Views
Martin Hope
Just a learner
Asked: 2019-05-06 12:00:25 +0800 CST

Como usar o awk para extrair dados de um arquivo com base no conteúdo de outro arquivo?

  • 4

Eu tenho dois arquivos. Um arquivo inclui dados estruturados e baixo é uma amostra.

article 1 title
article 1 body line 1
article 1 body line 2
+++
article 2 title
article 2 body line 1
article 2 body line 2
article 2 body line 3
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3

Como você pode ver, +++é o separador de registros. Para cada registro, a primeira linha é o título, todas as outras linhas são o conteúdo deste registro. Outro arquivo é um arquivo de texto simples com uma lista de títulos. Por exemplo:

article 1 title
article 3 title
article 4 title

O que eu quero são os registros com seus títulos listados no segundo arquivo. Assim, para o exemplo acima, o resultado esperado é:

article 1 title
article 1 body line 1
article 1 body line 2
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3

Acho que awkprovavelmente poderia resolver meu problema, mas não sei como.

O que eu tentei é isso:

awk 'BEGIN{RS="(\r?\n)?\+{3}(\r?\n)?"; FS="\r?\n"; ORS="+++"} NR==FNR{a[$0];next} ...' title_list.txt data.txt

Meu problema é que o RSpara os dois arquivos deve ser diferente e não sei como fazê-lo funcionar.

awk text-processing
  • 3 respostas
  • 1414 Views
Martin Hope
Just a learner
Asked: 2019-01-08 20:00:35 +0800 CST

Gnu sed, o comando p anexará uma nova linha ao imprimir?

  • 4
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
root@u1804:~#

Sou novo no sed e criei abaixo o fluxo de trabalho do sed com base no meu entendimento (corrija-me se encontrar algo errado).

insira a descrição da imagem aqui

Portanto, parece que a impressão automática padrão do espaço do padrão sempre incluirá uma nova linha no final. Minha pergunta é, pincluirá uma nova linha também? Tenho exemplos abaixo.

root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:

Aqui a nova linha no final de cada número é adicionada pelo próprio sed (veja o diagrama "adiciona nova linha ao espaço do padrão"). Portanto, parece pque não anexará uma nova linha. No entanto, veja o exemplo abaixo.

root@u1804:~# seq 3 | sed -rn 'x;p;x;p'

1

2

3
root@u1804:~#

Aqui x, troque o espaço de padrão com o espaço de espera, o que resultará em um espaço de padrão vazio. Agora pse aplica ao espaço do padrão (nada nele) deve imprimir nada. Mas com base no resultado, parece que aqui pimprime uma nova linha. Para mim, parece que este é um comportamento inconsistente. Alguém pode explicar?

sed
  • 3 respostas
  • 1886 Views
Martin Hope
Just a learner
Asked: 2019-01-07 15:34:08 +0800 CST

Como usar o comando a e i no Gnu sed para adicionar um caractere de nova linha usando \n?

  • 2

No exemplo abaixo, posso usar os caracteres literais de nova linha para adicionar uma linha vazia antes e depois 3. É possível usar \nem vez disso? Estou usando o Gnu sed 4.5.

root@u1804:~# seq 5 | sed -r -e '/3/{i\
> ' -e 'a\
> ' -e '}'
1
2

3

4
5
root@u1804:~#
sed
  • 1 respostas
  • 115 Views
Martin Hope
Just a learner
Asked: 2019-01-07 14:56:52 +0800 CST

Execute sed sem -n, o comando d ignorará o conteúdo do espaço padrão de impressão automática padrão?

  • 2

O documento dos sedestados que dirá:

Exclua o espaço do padrão; iniciar imediatamente o próximo ciclo.

Se sedfor executado sem -n, sedimprimirá automaticamente o espaço de padrão após um dcomando? Eu sei que nesta situação, o espaço do padrão está vazio. Então não há diferenças para imprimir ou não. Mas estou apenas curioso.

Eu tenho este exemplo:

root@u1804:~# seq 10 | sed -r '/5/d'
1
2
3
4
6
7
8
9
10
root@u1804:~#

Como você pode ver, não existe 5. É porque dcausou a execução diretamente no próximo ciclo ou o espaço de padrão de impressão automática imprime uma string vazia?

sed
  • 1 respostas
  • 272 Views
Martin Hope
Just a learner
Asked: 2019-01-07 05:13:04 +0800 CST

Como usar o comando w do sed e gravar no arquivo?

  • 2

Abaixo está meu teste. Como posso corrigir o erro?

ubuntu@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
ubuntu@u1804:~#
ubuntu@u1804:~# cat test
11
aa
bb
cc
edde
xx
aa
bb
cc
edde
22
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; w result}' test
sed: -e expression #1, char 0: unmatched `{'
ubuntu@u1804:~#
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; p}' test
11
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
(xx)
(xx)
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
22
ubuntu@u1804:~#
sed
  • 1 respostas
  • 2456 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