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

Alexander Mills's questions

Martin Hope
Alexander Mills
Asked: 2024-02-08 06:30:46 +0800 CST

systemd+ - 无法停止 mongo 服务

  • 5

我注意到 mongo 正在监听端口 27017

我试图用以下方法阻止它:

$ sudo systemctl stop mongod 无法停止 mongod.service: 单位

mongod.service 未加载。

然后我做了:

sudo service mongod stop 无法停止 mongod.service: 单位

mongod.service 未加载。

然后我必须这样做:

ps aux | grep mongo

我看到

systemd+    2082  0.0  0.7 2581952 127376 ?      Ssl  Feb04   3:02 mongod --bind_ip_all

那么什么是 systemd+ 以及如何管理它?

linux
  • 1 个回答
  • 19 Views
Martin Hope
Alexander Mills
Asked: 2023-10-06 00:09:44 +0800 CST

使用 comm 对结果进行分组

  • 5

使用comm我得到的结果看起来很奇怪:

comm -3 <(. "$first_env_file"; env) <(. "$second_env_file"; env) 

我得到类似的东西:

AUTH_LP_ACCOUNT_ID=xxx1
        AUTH_LP_ACCOUNT_ID=xxx2
        AWS_IMAGE_DOMAIN_NAME=abc
AWS_IMAGE_DOMAIN_NAME=zyx
NODE_ENV=local
        NODE_ENV=staging
        NODE_PORT=3000
NODE_PORT=4000
REDIS_HOST=localhost
        REDIS_HOST=redis

(是的,前面的空格(前置制表符/空格)在那里)

我希望它看起来像这样:

--begin--
AUTH_LP_ACCOUNT_ID=xx1
AUTH_LP_ACCOUNT_ID=xx2
---------
AWS_IMAGE_DOMAIN_NAME=abc
AWS_IMAGE_DOMAIN_NAME=zyx
---------
NODE_ENV=local
NODE_ENV=staging
---------
NODE_PORT=3000
NODE_PORT=4000
---------
REDIS_HOST=localhost
REDIS_HOST=redis
---end---

有办法做到这一点吗?

  1. 要删除前置行,我们可以通过 `sed 's/^ *// 进行管道传输。
  2. 将--begin--和放在---end---开始/结束处很容易
  3. 但如何轻松地对结果进行分组呢?

我对 3 的唯一猜测是循环每一行(先跳过),如果下一个结果有不同的 xxx= 与 abc= 则打印 a--------但我不喜欢这样。

bash
  • 1 个回答
  • 32 Views
Martin Hope
Alexander Mills
Asked: 2023-10-03 23:32:49 +0800 CST

比较两个 .env 文件

  • 5

我有两个 env 文件,假设 x.env 和 y.env,变量的顺序不同,但内容可能相同但可能不同。

有什么工具可以用来区分变量吗?

   env -i (
    # clear all envs
     source x.env;
     env | sort >  x.sh
    )

   env -i (
    # clear all envs
     source y.env;
     env | sort >  y.sh
    )

    diff x.sh y.sh

这就是最好的方法吗?如果缺少多个变量,它可能会使比较变得嘈杂并且不是很有用,而一一比较变量名称可能会更好。

shell
  • 1 个回答
  • 28 Views
Martin Hope
Alexander Mills
Asked: 2022-02-21 15:53:28 +0800 CST

如何给函数起别名并从具有原始名称的函数调用

  • 1

这更像是一项学术练习,但对答案感到好奇。这是当前有问题的代码:

export original_command_not_found_handler="$(type -f command_not_found_handler)" # original func as string

function command_not_found_handler(){  # my custom override
  echo "my custom handler: $@"
  echo "
     ${original_command_not_found_handler}
      command_not_found_handler "$@"
  " | bash

}

我想要做的是用我的自定义函数覆盖原始 zsh 函数,然后从覆盖中调用原始函数。

这段代码有两个问题:

  1. 我正在尝试从子shell(管道到bash)调用原始函数,但最好从当前shell而不是子shell调用。
  2. 它不起作用,因为原始函数没有在字符串中按需要进行解释。
bash zsh
  • 1 个回答
  • 106 Views
Martin Hope
Alexander Mills
Asked: 2022-02-19 11:21:04 +0800 CST

bash/zsh 挂钩 - 仅在未找到匹配文件时才添加到 PATH

  • 1

我正在寻找一个 bash/zsh钩子,当找不到命令时调用它。

假设我运行一些任意可执行文件:

xyz foo --bar
  1. 说 bash/zsh 找不到可执行文件。
  2. 有没有办法处理“未找到”,然后将一些库动态加载到 PATH 中?

像这样的东西:

function xyz {
  if ! test -f xyz; then
     load_libs xyz
  fi
  command -v xyz;
}

类似这个函数的东西,但它适用于未知的可执行文件。

所以一般来说它看起来像:

function on_not_found {
  if ! test -f "$1"; then
     load_libs "$1"
  fi
  command -v "$@";
}
bash shell
  • 1 个回答
  • 193 Views
Martin Hope
Alexander Mills
Asked: 2020-03-11 19:39:29 +0800 CST

如何使用测试否定正则表达式

  • 0

这在语法上是错误的:

#!/usr/bin/env bash

dimension="4x5"

if [[ "$dimension" !=~ '[0-9]x[0-9]' ]]; then
 echo 'wtf meng, the dimension needs an "x" in it.'
 return 1;
fi

上面的语法不好......所以我的问题是 - 有办法吗!=~

...我猜它是!~?如果这是真的,那么对于否定规则 lulz 来说就这么多了。好的。。我试了一下还是!~不行。。

bash shell
  • 2 个回答
  • 739 Views
Martin Hope
Alexander Mills
Asked: 2020-03-04 21:31:37 +0800 CST

检查外壳中的非空字符串(而不是!-z)

  • -3

我知道有一种方法可以做到这一点,但互联网搜索结果总是很糟糕 -

我想要做:

if [[ ! -z "$var" ]]; then
   # ....
fi

但我永远记不得了,我想是这样的:

if [[ -p "$var" ]]; then
   # ....
fi

或像这样:

if [[ -n "$var" ]]; then
   # ....
fi

有人可以提供一个很好的答案,它将出现在搜索引擎中,希望如果我将标题编辑为最佳,它也会有所帮助。

bash shell
  • 1 个回答
  • 1441 Views
Martin Hope
Alexander Mills
Asked: 2020-03-02 16:05:30 +0800 CST

可执行文件(二进制文件)的标准命名实践以及如何判断文件是否包含不可打印字符?

  • 1

所以我经常cat因为在二进制文件的可执行文件上运行而感到内疚,我的终端通常会发出一些奇怪的声音并且不开心。是否有一些公认的命名约定可以为二进制/可执行编码文件提供扩展名?

我有一个可执行文件(go build -o /tmp/api.exe .正如我刚才提到的,我只是将它命名为 .exe 的输出,但我想知道是否有办法在我 cat 之前检查文件以查看它是 utf8 还是 whateer。

files cat
  • 1 个回答
  • 667 Views
Martin Hope
Alexander Mills
Asked: 2020-02-25 12:33:25 +0800 CST

sh(不是 bash)不识别单 [ 或双 [[ 括号?

  • 1

我有这个脚本:

#!/usr/bin/env sh

# note: we must use sh instead of bash, it's more cross-platform

set -e;

if [[ "$skip_postinstall" == "yes" ]]; then   # TODO rename 'skip_postinstall' to something more specific
    echo "skipping postinstall routine.";
    exit 0;
fi

export FORCE_COLOR=1;
export skip_postinstall="yes";   # TODO rename 'skip_postinstall' to something more specific

mkdir -p "$HOME/.oresoftware/bin" || {
  echo "Could not create .oresoftware dir in user home.";
  exit 1;
}

(
  echo 'Installing run-tsc-if on your system.';
  curl  -H 'Cache-Control: no-cache' -s -S -o- 'https://raw.githubusercontent.com/oresoftware/run-tsc-if/master/install.sh' | bash || {
     echo 'Could not install run-tsc-if on your system. That is a problem.';
     exit 1;
  }
) 2> /dev/null


if [[ "$(uname -s)" != "Darwin" ]]; then
   exit 0;
fi

if [[ ! -f "$HOME/.oresoftware/bin/realpath" ]]; then
  (
    curl --silent -o- 'https://raw.githubusercontent.com/oresoftware/realpath/master/assets/install.sh' | bash || {
       echo "Could not install realpath on your system.";
       exit 1;
    }
  )
fi

# the end of the postinstall script

当我运行它时,我得到:

./assets/postinstall.sh: 7: ./assets/postinstall.sh: [[: not found
Installing run-tsc-if on your system.

 => Installing 'run-tsc-if' on your system.
 => run-tsc-if download/installation succeeded.

./assets/postinstall.sh: 29: ./assets/postinstall.sh: [[: not found
./assets/postinstall.sh: 33: ./assets/postinstall.sh: [[: not found

但是如果我用单括号替换双 [[ 括号,我得到:

./postinstall.sh: 7: [: unexpected operator

这只是来自:

if [ "$skip_postinstall" == "yes" ]; then  
    echo "skipping postinstall routine.";
    exit 0;
fi

嗯,我该怎么办?我尝试使用test而不是[并且[[这也不起作用。

shell test
  • 2 个回答
  • 651 Views
Martin Hope
Alexander Mills
Asked: 2020-02-21 20:06:07 +0800 CST

tmux kill-window 不会杀死子进程

  • 4

如果我这样做ctrl-c并且ctrl-d杀死窗格中的 procs 然后从 tmux 退出,那么所有子进程都会死掉。

但如果我这样做:

ctrl+b后跟shift+%

然后选择 Y 杀死窗口,然后 procs 保持活动状态。知道如何确保窗口被杀死时触发被杀死吗?

tmux
  • 2 个回答
  • 1747 Views
Martin Hope
Alexander Mills
Asked: 2020-01-31 13:02:04 +0800 CST

修改 /etc/hosts 以进行 dns 查找的替代方法

  • 0

我是网络新手 -ping无法找到某些 dns 名称,所以我将它们放在 /etc/hosts 中,如下所示:

10.128.0.22 kafka.marathn.meso
10.128.0.31 elasticsearch.marathn.meso

然后ping可以找到它们。如果 IP 地址发生变化,是否有更动态/可扩展的方式将 DNS 名称映射到 IP 地址?

dns ping
  • 1 个回答
  • 198 Views
Martin Hope
Alexander Mills
Asked: 2020-01-24 17:52:23 +0800 CST

subshel​​l 和 if 块之间的区别

  • -1

有什么区别:

set -e;
./create-git-tag.sh || {
   echo 'Could not create git tag.'
   exit 1;
}

和

set -e;
if ! ./create-git-tag.sh; then 
    echo 'Could not create git tag.'
    exit 1;
fi

我猜 if 块不会创建子shell,因此会在输入 if 块之前退出?它们似乎功能相同,行为有什么不同吗?

bash shell
  • 2 个回答
  • 338 Views
Martin Hope
Alexander Mills
Asked: 2020-01-21 13:18:49 +0800 CST

如何从路径中获取目录名

  • -2

我有这个:

find . -type f -name '*_test.go' | xargs dirname

但我得到:

用法:目录名路径

的输出

$ find . -type f -name '*_test.go' 

是:

./pkg_test.go
./v3/organization/organization_test.go
./v3/common/pkg_test.go
./v3/model/boil_main_test.go
./v3/model/boil_queries_test.go
./v3/model/advances_test.go
./v3/model/boil_suites_test.go
./v3/model/psql_main_test.go
./v3/model/psql_suites_test.go

有谁知道我怎样才能得到文件的目录名?也许我需要绝对路径?

bash find
  • 1 个回答
  • 1117 Views
Martin Hope
Alexander Mills
Asked: 2019-10-22 13:12:33 +0800 CST

如何从heredoc重定向到文件

  • 4

我有这个:

cat <<EOF

'use strict';

exports.default = {

  'display names': {}

}

EOF >  "$PWD/tmp.js"

但这显然在语法上是错误的,有人知道这样做的语法吗?

bash
  • 1 个回答
  • 1246 Views
Martin Hope
Alexander Mills
Asked: 2019-10-05 15:28:47 +0800 CST

systemd 服务持续时间不超过 6 小时

  • 1

我在日志中收到此错误消息:

 Stopping User Manager for UID 1000

我认为这就是我的 systemd 服务无法继续运行的原因。有谁知道这意味着什么,以及如何让我的服务保持 24/7 全天候运行?服务定义如下所示:

[Unit]
Description=Interos MongoDB+ES log capture
After=network.target

[Service]
Environment=interos_emit_only_json=yes
EnvironmentFile=/home/ubuntu/env/es-service.env
StartLimitIntervalSec=0
Type=simple
Restart=always
RestartSec=1
ExecStart=/home/ubuntu/repos/elastic-search-app/syslog-exec.sh

[Install]
WantedBy=multi-user.target
systemd
  • 1 个回答
  • 444 Views
Martin Hope
Alexander Mills
Asked: 2019-10-04 22:17:34 +0800 CST

如何在 Mac 上写入 /var/log/system.log

  • 2

我在 Mac 上跟踪 system.log:

tail -f -n 0 /var/log/system.log

但我不知道如何写入此日志。它似乎确实是机器上的主要日志。我试过了:

logger foobar  # didn't work
syslog -s -l error "message to send"  # didn't work

有人知道如何在 Mac 上写入 system.log 吗?

更新:

如果我运行:log stream

然后使用:

logger -is -t krypted "Hello L"

它会出现在流中,但不会出现在/var/log/system.log. 诡异的。

osx
  • 1 个回答
  • 5162 Views
Martin Hope
Alexander Mills
Asked: 2019-09-26 15:50:46 +0800 CST

如何有条件地运行具有相同参数的不同命令

  • 0

如果定义了 gtar,我想使用它,而不是 tar:

if command -v gtar; then
  gtar --exclude-ignore='.deployignore' -cf /dev/stdout . | aws s3 cp - "$arti_fact"
else
  tar --exclude-ignore='.deployignore' -cf /dev/stdout . | aws s3 cp - "$arti_fact"
fi

然而,就 DRY 而言,这是有罪的。有没有办法有条件地运行具有相同参数的不同命令?

bash
  • 1 个回答
  • 94 Views
Martin Hope
Alexander Mills
Asked: 2019-09-24 15:28:43 +0800 CST

无法将 .pem 文件内联为 ssh 的 -i 选项

  • 1

我收到此错误:

警告:身份文件 /dev/fd/63 无法访问:文件描述符错误。

运行此命令时:

ssh -Y 'root@ec2-54-xxx-94-xxx.us-west-2.compute.amazonaws.com' -i <(cat << EOF
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAgbUQXIfIWtMJpYcTn5C+LStaL8NICo/0l1V33IQ8pQADUk+Tq+cfotyiHrRl  
JXRyn8KJe8zmAQs7uSR3drVdj2KNFhXnFsEbXYxjAS93ZutO1Z2eBvvKcp/W8AoOr7r2JtTXaGml
W18/0Fot83UcVRdqYI4CCv5hhYN7oGDYT94d8d0yFtuIhXf8IlkCgYEAkugROAktxuG1AgQ9KGP5
.........
a3ZAHHf5F2rn0oW0X5YNtEWqhGknYQkkiztqaWAPM4bAP7gpDIqYyqh81soqYHxxP9q2Ch634NPb
BMmdZb9hMb/PY9bJNKwZt/yO7W0yq1zzjXFIqhymGDqkc/E4/K+V+svsDIV8VtainrY=
-----END RSA PRIVATE KEY-----
EOF
)
nix-collect-garbage

我只是想在远程机器上运行“nix-collect-garbage”命令。

也许临时文件/fd 有错误的权限?有没有办法给我正确的权限?

我认为这是进程替换的权限问题,但不确定如何解决。

shell
  • 1 个回答
  • 361 Views
Martin Hope
Alexander Mills
Asked: 2019-09-21 20:07:05 +0800 CST

关闭消费者的正确方法

  • 4

假设我们有一个简单的管道:

set -eo pipefail;
echo 'foo' | cat

怎么cat知道什么时候退出?是在 STDIN 流结束时还是cat收到信号时?在我的情况下,生产者进程收到一个 SIGINT 然后退出代码 1,那么cat(消费者进程)如何知道生产者进程退出的退出代码是什么?

bash
  • 1 个回答
  • 457 Views
Martin Hope
Alexander Mills
Asked: 2019-09-19 12:47:03 +0800 CST

`tee` 到标准输出和进程的最佳方式

  • 1

我想做这样的事情:

echo 'foo' | tee /dev/stdout > >(cat)

标准输出从哪里echo被发送到终端和 cat 进程。有没有更简单的方法来做到这一点?

当我运行这个:

 echo 'foo' | tee >(echo 'bar')

出于某种原因,它不回显“foo”它只回显“bar”,为什么?

bash
  • 3 个回答
  • 2170 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