小编E23*_*235的帖子

alpine 中的等效软件包 build-essential 和 linux-headers-<xxxx> 是什么?

我想在 Alpine 中构建内核模块;我知道如何在 Ubuntu 中做到这一点。
在 Ubuntu 中,我曾经通过运行以下命令来安装内核头文件:

apt install -y build-essential linux-headers-$(uname -r)
Run Code Online (Sandbox Code Playgroud)

Alpine 中的等效项是什么?

我在网上搜索了一下,Github 用户 progrium 写了一条评论,相当于build-essentialis build-base,但是 呢linux-headers-$(uname -r)

ubuntu kernel-modules apt alpine-linux pkg

6
推荐指数
1
解决办法
6750
查看次数

如何从 Linux shell 中删除“exit”命令

我正在使用 Linux Ubuntu 16.04。
在这个挑战中,我想从 Linux shell 中删除一些命令。

具体来说,我想删除exit命令。
我希望如果用户尝试使用此命令退出 shell,则不可能,甚至可能会发送一些消息。

知道我该怎么做吗?
我搜索了一个名为 的文件exit
find / -name exit

但它只找到了目录:

/usr/src/linux-headers-4.13.0-41-generic/include/config/have/exit
/usr/src/linux-headers-4.13.0-41-generic/include/config/have/irq/exit
/usr/src/linux-headers-4.13.0-43-generic/include/config/have/exit
/usr/src/linux-headers-4.13.0-43-generic/include/config/have/irq/exit
/usr/src/linux-headers-4.13.0-36-generic/include/config/have/exit
/usr/src/linux-headers-4.13.0-36-generic/include/config/have/irq/exit
/usr/src/linux-headers-4.15.0-43-generic/include/config/have/exit
/usr/src/linux-headers-4.15.0-43-generic/include/config/have/irq/exit
Run Code Online (Sandbox Code Playgroud)

编辑:
在这里阅读关于trap像这样使用的信息trap "ENTER-COMMAND-HERE" EXIT,我尝试过,trap "sh" EXIT但它仍然存在外壳。

shell exit

3
推荐指数
2
解决办法
1422
查看次数

如何通过精确命令查找进程?

这是我的进程列表:

$ ps
PID   USER     TIME  COMMAND
    1 root      0:00 bash -c cp -R /docker /var/lib; echo Loading...; wrapdocker
    7 root      0:00 bash --login
  312 root      0:00 dockerd
  321 root      0:00 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
  488 root      0:00 ps
Run Code Online (Sandbox Code Playgroud)

我想检查进程dockerd是否正在运行。
当我运行时:ps | grep dockerd它打印两个进程:

$ ps | grep 'dockerd'
  312 root      0:00 dockerd
  492 root      0:00 grep dockerd  
Run Code Online (Sandbox Code Playgroud)

我需要通过特定的命令行找到它,dockerd而不是grep dockerd.

我需要它作为 shell 脚本的一部分来检查是否dockerd正在运行。

shell ps

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

如何在 Linux 容器内替换 /bin 中的二进制文件

我想做一些奇怪的容器,我的任务之一是替换uname二进制文件。
我编码它:

#include <stdio.h>
int main() {
   printf("This is a fake uname\n");
   return 0;
}  
Run Code Online (Sandbox Code Playgroud)

编译它:

gcc uname.c -o uname
Run Code Online (Sandbox Code Playgroud)

当我在我的 ubuntu 上运行它时它工作正常。

我创建了一个Dockerfile并将其复制到图像中:

cat > Dockerfile <<EOF
FROM alpine:latest
RUN rm /bin/uname
COPY uname /bin/
ENTRYPOINT sh;
WORKDIR /home
EOF  
Run Code Online (Sandbox Code Playgroud)

并建造它 docker build -t myimage -f Dockerfile .

当我运行图像时:

docker run -it --rm myimage  
Run Code Online (Sandbox Code Playgroud)

该文件存在,但是当我尝试运行它时,它写入它不存在:

/home # uname
sh: uname: not found
/home # ls -lia uname
ls: uname: No such file or directory
/home …
Run Code Online (Sandbox Code Playgroud)

container docker

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

不能 tar 文件:拒绝从终端读取存档内容

我没有主机,dpkg所以我需要安装它。
我按照这里这里的说明进行操作。

在这两个答案中,他们都写道我需要下载文件:

wget http://security.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.2_i386.deb
or
wget http://security.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.2_amd64.deb
Run Code Online (Sandbox Code Playgroud)

tar像这样使用:

tar x dpkg*.deb data.tar.gz
tar xfvz data.tar.gz ./usr/bin/dpkg
cp ./usr/bin/dpkg /usr/bin/
Run Code Online (Sandbox Code Playgroud)

但是运行后tar x dpkg*.deb data.tar.gz失败了:

[root@webtl1 ~]# tar x dpkg*.deb data.tar
tar: Refusing to read archive contents from terminal (missing -f option?)
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

我点击了这个链接:
https : //askubuntu.com/questions/143107/how-to-extract-archives-to-file-system-in-terminal
并尝试使用tar xvzf dpkg*.deb data.tar.gz 但它也失败了:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: …
Run Code Online (Sandbox Code Playgroud)

tar terminal dpkg gzip

0
推荐指数
1
解决办法
3142
查看次数

仅使用“sh -c”调用 shell 脚本时出现错误:“意外的运算符”

我有以下脚本:

installRequiredFiles=$1

install_with_pkg()
{
    arg1=$1
        echo $arg1
    echo "[+] Running update: $arg1 update."
}

if [ $installRequiredFiles = "true" ]; then
    if [ -x "$(command -v apt)" ]; then
          install_with_pkg "apt"
        elif [ -x "$(command -v yum)" ]; then
          install_with_pkg "yum"
        elif [ -x "$(command -v apk)" ]; then
          install_with_pkg "apk"
        else
          echo "[!] Can't install files."
    fi
fi
Run Code Online (Sandbox Code Playgroud)

当我直接运行它时,它工作正常:

root@ubuntu:/# ./myscript.sh "true"
apt
[+] Running update: apt update.
Printing installRequiredFiles: true
Printing arg1: apt
Run Code Online (Sandbox Code Playgroud)

但是当我使用时,sh -c我收到以下错误:

root@ubuntu:/# …
Run Code Online (Sandbox Code Playgroud)

linux shell ubuntu shell-script

0
推荐指数
1
解决办法
649
查看次数

标签 统计

shell ×3

ubuntu ×2

alpine-linux ×1

apt ×1

container ×1

docker ×1

dpkg ×1

exit ×1

gzip ×1

kernel-modules ×1

linux ×1

pkg ×1

ps ×1

shell-script ×1

tar ×1

terminal ×1