AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-249806

Wimateeka's questions

Martin Hope
Wimateeka
Asked: 2020-03-05 12:02:48 +0800 CST

启动 chroot 时使用 bash 内置 `bind` 命令

  • 2

我有一个 chroot,我希望 chroot 在启动时有自己的.inputrc文件,然后运行一个程序。

我习惯用 chroot 启动,chroot <PATH> <PROGRAM_TO_RUN>所以我尝试了

chroot <PATH> bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN> 

但后来我得到了错误:

chroot: failed to run command ‘bind’: No such file or directory

阅读readline手册后,我看到bind是bash内置的。所以我尝试使用builtin像这样运行命令:

chroot <PATH> builtin bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN> 

但得到了同样的错误:

chroot: failed to run command ‘builtin’: No such file or directory

我知道通过 chroot 一起运行两个程序&&,因为我测试过:

~# chroot <PATH> echo "yo" && echo "Hi"
yo
Hi
~#

我也知道bind命令和builtin命令在 chroot 中独立工作:

~# chroot <PATH> bash
/# builtin -h
bash: builtin: -h: invalid option
builtin: usage: builtin [shell-builtin [arg ...]]
/# builtin bind -h
bash: bind: -h: invalid option
bind: usage: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]
/# bind -h
bash: bind: -h: invalid option
bind: usage: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]

如何在命令中运行bind命令,以便为 chrootchroot设置自定义?.inputrc

bash chroot
  • 1 个回答
  • 185 Views
Martin Hope
Wimateeka
Asked: 2019-12-07 12:18:32 +0800 CST

如果 xev 不存在,如何安装

  • 2

我正在自学xmodmap,一些教程说你可以通过使用xev.

当我尝试运行命令时,我得到 -bash: xev: command not found

运行apt-cache policy xev产量N: Unable to locate package xev。

谷歌搜索和检查各种堆栈交换站点也没有任何关于安装的文章xev(如果丢失)。

它与什么软件包分开,我如何安装它?

我正在运行 i386 Debian 8。

debian apt
  • 1 个回答
  • 2536 Views
Martin Hope
Wimateeka
Asked: 2019-10-30 08:54:53 +0800 CST

如何使用 docker 构建 chroot?

  • 2

目前,我能够在我的开发人员机器上构建一个 Ubuntu 18.04 32 位 chroot,我想知道我是否可以让这个过程发生在一个 docker 容器中。

我使用的过程:

  • 解压 ubuntu 基础镜像 ( ubuntu-base-18.04.3-base-i386.tar.gz)
  • resolve.conf从主机复制到未解压的文件系统
  • 挂载/sys,/proc和/dev
  • 运行chroot /location/of/filesystem /bin/bash进入 chroot 并运行进一步的设置
  • 完成后,我卸载所有内容并将/location/of/filesystem.

是否可以在 docker 容器中执行相同的方法?

我没有看到任何关于能够从 docker 容器中挂载/卸载文件的信息。

docker
  • 2 个回答
  • 4166 Views
Martin Hope
Wimateeka
Asked: 2019-10-01 10:46:56 +0800 CST

在没有窗口管理器的 X 应用程序之间切换

  • 2

我目前有一个与 Web 应用程序交互的 Java 应用程序。

Java应用首先启动,成为全屏应用;然后chromium-browser在它上面启动,也成为一个全屏应用程序。

我希望能够在这两个应用程序之间来回切换。

有没有办法能够在仅使用 X 和不使用窗口管理器使这些应用程序可见/最上面的应用程序之间来回切换?我没有很多资源来运行通常功能齐全的窗口管理器。

机器信息: Linux Debian 8 i386,单显示器,单显示器,4GB 磁盘,2GB RAM,无交换

$ xdpyinfo | grep version
   version number:    11.0
   X.Org version: 1.16.4

我试过使用wmctrl,xdotools但你需要一个窗口管理器。我不断收到错误,例如

您的窗口管理器声称不支持 _NET_ACTIVE_WINDOW,因此查询活动窗口的尝试中止。xdo_get_active_window 报错

和

无法获取客户端列表属性。(_NET_CLIENT_LIST 或 _WIN_CLIENT_LIST)

debian
  • 1 个回答
  • 1249 Views
Martin Hope
Wimateeka
Asked: 2019-07-09 09:48:34 +0800 CST

set -u 在 bash 脚本中的 heredoc 中找到未设置的值 [重复]

  • 1
这个问题在这里已经有了答案:
在多行注释中引用变量时出现 Bash 'unbound variable' 错误(set -u)[重复] (1 个答案)
3年前关闭。

我有一个我在这里简化的脚本:

#!/bin/bash
# test.sh

set -u

### test-script ###
cat <<SCRIPT > ~/test-file-output
#!/bin/bash
set -e

usage() {
  cat <<EOF
Does a thing
EOF
}

for opt in "$@"; do
  case $opt in
    -h|--help)
      usage
      exit 0
      ;;
    *)
      echo "Invalid option: $opt" >&2
      usage
      exit 1
      ;;
  esac
done
SCRIPT
chmod +x ~/test-file-output

并且因为父脚本有set -u它opt在heredoc的子脚本中捕获var;子脚本设置opt为 的值$@。

有没有办法让它忽略heredoc中的所有变量和文本,因为它不是父脚本本身的一部分?我认为它会将heredoc视为一个巨大的字符串,而不是根据脚本语法对其进行解析。

bash variable
  • 1 个回答
  • 305 Views
Martin Hope
Wimateeka
Asked: 2019-06-14 08:25:26 +0800 CST

更改键盘布局而不重新启动适用于所有虚拟终端实例的系统

  • 2

我使用和开发的设备是由一家丹麦公司制造的。每当我们通过 ssh 进入基于 Debian 8 的设备时,它们的键盘布局是美国 QWERTY,但如果我们将美国 USB 键盘连接到设备本身,它们的键盘布局是丹麦语。

我一直在尝试找到一种简单的方法来设置所有 10 个虚拟终端的键盘布局,因为我们将它们用于开发目的。(它们是由 systemd 服务在启动时运行的 mingetty)。

我发现我可以在某种程度上成功地将布局更改为美国,如果我:

  • 我通过 SSH 连接到设备
  • /etc/default/keyboard手动编辑拥有XKBLAYOUT="us"而不是XKBLAYOUT="dk"
  • 跑udevadm trigger --subsystem-match=input --action=change

但是,它并没有改变我之后在本地登录的虚拟终端的布局。

如果我满足以下条件,我可以成功地将所有 VT 的布局更改为 US:

  • 我通过 SSH 连接到设备或在本地登录
  • /etc/default/keyboard手动编辑拥有XKBLAYOUT="us"而不是XKBLAYOUT="dk"
  • 重启设备

有没有其他方法可以让这些更改生效而无需重新启动整个设备?

我知道我需要做的就是改变,XKBLAYOUT所以当我尝试使用时,setxkbmap -model pc105 -layout us我会Cannot open display "default display"回来。注意:当我 ssh 或本地登录到设备时,我是 root,并且一直以 root 身份运行所有命令。

我的/etc/default/keyboard文件很简单:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="dk"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"

我的目标是编写该过程的脚本,因此所有 QA 所要做的就是运行一个简单的脚本来在美国(这样他们可以更轻松地打字)和丹麦语(这样他们可以将设备设置回与生产设备相似)之间来回切换尽可能)。

debian terminal
  • 1 个回答
  • 1735 Views
Martin Hope
Wimateeka
Asked: 2018-08-10 09:52:52 +0800 CST

给定一个块设备文件,我如何列出所有相关部分?

  • 0

给定一个设备文件(例如:)/dev/sda,我如何获得所有相关分区的列表?

预期输入:

/dev/sda

预期输出:

/dev/sda1
/dev/sda2
/dev/sda3
...

我知道有很多方法可以获取有关块设备的信息,例如lsblk, blockdev, fdisk,blkid等等,但我想要一个最简洁的解决方案(即,不使用大量管道到grep, sed, awk, uniqETC)。

解决这个问题最凝练的一个衬管是什么?

注意:我正在使用 linux(特别是 ubuntu)并使用终端或 shell 脚本来解决这个问题。

shell devices
  • 1 个回答
  • 489 Views
Martin Hope
Wimateeka
Asked: 2018-02-10 07:41:34 +0800 CST

postinst 维护者脚本阻止 systemd 单元文件在安装时自动启动

  • 1

我正在创建一个小型 Debian 包来安装 systemd 单元文件,特别是*.service文件。

我的包裹看起来像:

myservice
      | 
      |--debian
            |- comapat
            |- preinst
            |- postinst
            |- rules
            |- myservice.service

当我安装我的包时,systemd 服务会自动禁用并且它们不会启动。

安装好后systemctl status myservice显示

root@ubuntu-xenial:~# systemctl status myservice
  ● myservice.service - My Service - echos output and says when it started
  Loaded: loaded (/lib/systemd/system/myservice.service; disabled; vendor preset: enabled)
  Active: inactive (dead)

但是,当我在没有postinst脚本的情况下安装我的包时,systemd 服务会自动启用,并且它们会在安装后启动。

root@ubuntu-xenial:~# systemctl status myservice
● myservice.service - MyService - echos output and says when it started
Loaded: loaded (/lib/systemd/system/myservice.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-02-09 15:06:36 UTC; 10s ago
Main PID: 5024 (sh)
Tasks: 2
Memory: 172.0K
  CPU: 1ms
CGroup: /system.slice/myservice.service
       ├─5024 /bin/sh -c echo 'myservice.service started' && echo $(date +%s) && sleep infinity
       └─5026 sleep infinity

我很困惑,因为我的 postinst 是“小而愚蠢的”:

#!/bin/sh -e
# POSTINST script for myservice
set -e

echo "\033[36m HI I'M A POSTINST SCRIPT `date +"%s"` \033[39m"

为什么 postinst 的存在会覆盖 systemd 服务的“自动启用和启动”?

debhelper 的哪一部分处理这个问题,我错过了什么?

或者我应该在我的postinst维护者脚本中添加什么来让我的服务在安装时启动并运行?


注意:我的环境是一个带有 virtualbox 提供程序的小型 vagrant box。我正在使用ubuntu-xenial64 Vagrant box。不确定这种环境是否会影响这一点。

debian ubuntu
  • 1 个回答
  • 2022 Views
Martin Hope
Wimateeka
Asked: 2018-01-26 11:48:50 +0800 CST

systemd 前后声明

  • 13

man 中对 systemd 单元的定义有点不清楚:https ://www.freedesktop.org/software/systemd/man/systemd.unit.html

如果一个单元foo.service包含一个设置Before=bar.service并且两个单元都正在启动,则bar.service启动将延迟到 foo.service启动。[...] After=是 的倒数Before=,即同时After=确保配置的单元在列出的单元完成启动后启动, 同时确保配置的单元在列出的单元Before=启动之前完全启动。

可以说我有a.service和b.service。我想a.service完全启动之前,b.service因为b.service依赖于a.service.

阅读上述手册页后,我找不到任何关于是否:

  • 您只需要Before=b.service在a.service单元文件中指定
  • 您只需要After=a.service在b.service单元文件中指定
  • 您需要在 单元文件和单元文件After=a.service中b.service Before=b.servicea.service

我需要为 systemd 单元文件声明哪些依赖项?有关系吗?

systemd services
  • 1 个回答
  • 23952 Views
Martin Hope
Wimateeka
Asked: 2018-01-23 05:08:47 +0800 CST

创建 debian 包时放置 systemd 服务 EnvironmentFile 的位置

  • 12

我目前正在重写upstart要使用的工作systemd,我想知道:

的“默认”位置在EnvironmentFile哪里?

它可能会进入/etc/environment

它可能与 中的所有其他服务文件一起存在/etc/systemd/service,/run/systemd/system或者/lib/systemd/system但我EnvironmentFile在这些位置中看不到任何其他 s 中的任何其他Service.

我也辩论过/etc/default/或/etc/<PACKAGE_NAME>

没有记录的“常规”位置可以放置它。我见过的许多示例似乎/tmp/<FILE_NAME>都没有意义,因为在重新启动时会被擦除,并且这些文件需要保留,以便在启动或重新启动/tmp时可以引用它们。Service


背景:我EnvironmentFile在安装 debian 软件包之前生成预安装时间(使用维护者脚本),并且我知道每次启动/重新启动服务时该文件都必须可用。

files systemd
  • 1 个回答
  • 11896 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve