小编Seb*_*ebi的帖子

在后台多次运行相同的命令

如何使用 bash 运行多个命令并在后台运行它们?

例如:

$ for i in {1..10}; do wait file$i &; done
Run Code Online (Sandbox Code Playgroud)

其中 wait 是自定义二进制文件。

现在我收到一个错误:

syntax error near unexpected token `;'
Run Code Online (Sandbox Code Playgroud)

运行上述命令时。

一旦后台运行,命令应该并行运行。

command-line bash background-process

19
推荐指数
1
解决办法
1万
查看次数

在 bash 中的文件中执行原子写操作

通过庆典会后文件这个问题,一个它仍然不是很清楚,我哪能执行原子写入(追加)操作在bash文件。我有一个在多个实例中运行的脚本,并且在某些时候必须将数据写入文件:

echo "$RESULT" >> `pwd`/$TEMP_DIR/$OUT_FILE
Run Code Online (Sandbox Code Playgroud)

如何使所有并发运行的脚本的所有写入操作都原子化(以便来自一个实例的数据不会与来自另一个实例的数据重叠)?

linux command-line semaphore bash

16
推荐指数
2
解决办法
8336
查看次数

读取ELF文件的程序头内容

如何从 ELF 文件中单独提取可加载程序头?通过使用 readelf 检查二进制文件,可以获得类似于以下内容的输出:

$ readelf -l helloworld

Elf file type is EXEC (Executable file)
Entry point 0x400440
There are 9 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x0000000000400040 0x0000000000400040
                 0x00000000000001f8 0x00000000000001f8  R E    8
  INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238
                 0x000000000000001c 0x000000000000001c  R      1
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
  LOAD           0x0000000000000000 0x0000000000400000 0x0000000000400000
                 0x000000000000070c 0x000000000000070c  R E    200000
  LOAD           0x0000000000000e10 0x0000000000600e10 0x0000000000600e10
                 0x0000000000000230 0x0000000000000238  RW     200000
  DYNAMIC        0x0000000000000e28 0x0000000000600e28 0x0000000000600e28 …
Run Code Online (Sandbox Code Playgroud)

linux c ubuntu debian elf

5
推荐指数
1
解决办法
9438
查看次数

比较两个目录中的每个文件,如果与对应文件不同,则将其复制到另一个目录中

如何比较两个目录中的所有文件并将不同的文件复制到另一个目录?例如,假设我们有dir1dir2

dir1:
     build.gradle
     gradle.properties
     somejar.jar
     javacode.java
     anotherjar.jar

dir2:
     build.gradle      <-- different from build.gradle in dir1
     gradle.properties
     somejar.jar
     javacode.java     <-- different from javacode.java in dir1
     yetanotherjar.jar
Run Code Online (Sandbox Code Playgroud)

我怎么可能会创建一个新的目录DIR3包含从不同的文件DIR2,在共同文件DIR1DIR2和所有常见的文件都DIR1DIR2dir3应包含:

dir3:
     build.gradle      <-- from dir2
     gradle.properties <-- these are common files both in dir1 and dir2
     somejar.jar       <--
     javacode.java     <-- from dir2
     anotherjar.jar    <-- from dir1
     yetanotherjar.jar <-- from dir2
Run Code Online (Sandbox Code Playgroud)

shell file-copy

3
推荐指数
1
解决办法
1366
查看次数

如何将文件从一个目录复制到另一个目录,以便只复制新文件?

如何将所有新内容从一个目录复制到另一个目录,以便仅从源目录复制新文件(两个目录具有相同的命名树)。例如,这里是目录 A 的布局:

/dirA
     a.php
     b.txt
     subdirA1/
              readme.txt
              config
              source_file1.c

/dirB
     c.php
     subdirA1/
              readme.txt
Run Code Online (Sandbox Code Playgroud)

最后dirB应该在dirA 中包含所有新文件。假设dirA及其子目录中只有新文件。结果应该是两个目录的并集:

/dirB
     a.php
     b.txt
     c.php
     subdirA1/
              readme.txt
              config                  
              source_file1.c
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 cp -ra:

cp -ra dirA/* dirB/
Run Code Online (Sandbox Code Playgroud)

dirB完全被dirA覆盖。

directory file-copy directory-structure

3
推荐指数
1
解决办法
6159
查看次数

读取 ELF 文件的内容(以编程方式)

我正在尝试检索 ELF 二进制文件中附加部分的内容。此时,我使用以下代码来检索每个部分的名称:

#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <stdlib.h>

#pragma pack(push,1)
#pragma pack(pop)

#define EI_NIDENT       16

/* 32-bit ELF base types. */
typedef unsigned int Elf32_Addr;
typedef unsigned short Elf32_Half;
typedef unsigned int Elf32_Off;
typedef signed int Elf32_Sword;
typedef unsigned int Elf32_Word;

/* 64-bit ELF base types. */
typedef unsigned long long Elf64_Addr;
typedef unsigned short Elf64_Half;
typedef signed short Elf64_SHalf;
typedef unsigned long long Elf64_Off;
typedef signed int Elf64_Sword;
typedef unsigned int Elf64_Word;
typedef unsigned long long …
Run Code Online (Sandbox Code Playgroud)

linux c ubuntu debian files

2
推荐指数
1
解决办法
1万
查看次数