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
    • 最新
    • 标签
主页 / server / 问题

问题[unix-shell](server)

Martin Hope
Daniel Gray
Asked: 2020-11-10 09:47:24 +0800 CST

如何可靠且可移植地将二进制信息序列化到 POSIX shell

  • 1

问题上下文

我正在尝试实现一个作业编排器,其代理/工作程序通过 SSH 会话/shell 连接到机器。我想将(可能是二进制)文件传输到这些代理(任何类型的任务都可能需要)。

显然,如果可以以任何方式配置端口,则nc可以执行一些指令。但是,我正在尝试获得适用于最严格设置的东西。

在这种设置中(手动)工作时,我经常做的事情是将文件序列化为 Base64 或类似文件,然后将数据“粘贴”到控制台会话中,例如:

echo -n "BINARY_BASE64_DATA" | base64 --decode > file_destination.file

我想为我上面描述的代理/工作人员实现类似的东西。

问题

问题的关键在于使用什么工具来获得最大的兼容性表面。大多数 Linux 机器(甚至是最基本的 Docker/Vagrant 映像)似乎都已base64安装。然而,FreeBSD 似乎没有预装这个命令。我知道我可以使用或 Ports 安装它pkg,但我想尽可能多地使用开箱即用的东西。

我寻找了更多 POSIX/Unix-y 的东西,发现了这个:https ://en.wikipedia.org/wiki/List_of_Unix_commands它说:

这是 IEEE Std 1003.1-2008 指定的 Unix 命令列表,它是单一 UNIX 规范 (SUS) 的一部分。这些命令可以在 Unix 操作系统和大多数类 Unix 操作系统上找到。

并且有一个长长的命令表,其中相关的命令uuencode都uudecode被列为“强制”。

在 FreeBSD 上,我可以看到它是开箱即用的。

在我的 Ubuntu 桌面上,它也存在,虽然我不知道它是开箱即用的,还是作为我安装的其他东西的依赖项安装的。但是,在 Ubuntu Vagrant 框(generic/ubuntu2004特别是 )中,调用uuencode会显示以下消息:

$ uuencode

Command 'uuencode' not found, but can be installed with:

apt install sharutils
Please ask your administrator.

在我基于 Ubuntu 14.04 的 Docker 映像上,我得到:

# uuencode
bash: uuencode: command not found
  1. 为什么 Ubuntu 并非在所有情况下都包含uuencode/uudecode开箱即用?这是否使其不符合 POSIX/Unix 标准?
  2. 是否有另一个我缺少的命令提供了我正在寻找的那种功能,或者我应该放弃并要求工作人员/代理机器base64安装二进制文件以与协调器一起使用?
linux unix freebsd posix unix-shell
  • 1 个回答
  • 252 Views
Martin Hope
Nikhil Vijayan
Asked: 2020-03-20 04:56:31 +0800 CST

如果我想在unix中删除几天不访问的文件怎么办?

  • 0

如果我想删除在 Unix 中几天未访问的文件/文件夹怎么办?假设有一些文件在 5 天前在特定位置被最后一次访问。我想删除那些。什么是shell命令?

unix-shell
  • 2 个回答
  • 36 Views
Martin Hope
j4x
Asked: 2017-03-17 05:38:02 +0800 CST

每个设备的 Linux 可用磁盘空间

  • 1

在我的系统中,df -hT输出如下内容:

> df -hT 
Sist. Arq.     Tipo      Tam. Usado Disp. Uso% Montado em
devtmpfs       devtmpfs  1,9G  8,0K  1,9G   1% /dev
tmpfs          tmpfs     1,9G  616K  1,9G   1% /dev/shm
tmpfs          tmpfs     1,9G  1,8M  1,9G   1% /run
tmpfs          tmpfs     1,9G     0  1,9G   0% /sys/fs/cgroup
/dev/sda6      btrfs      80G   22G   58G  27% /
/dev/sda6      btrfs      80G   22G   58G  27% /.snapshots
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/pgsql
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/mysql
/dev/sda6      btrfs      80G   22G   58G  27% /var/opt
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/libvirt/images
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/mailman
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/machines
/dev/sda6      btrfs      80G   22G   58G  27% /var/crash
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/mariadb
/dev/sda6      btrfs      80G   22G   58G  27% /var/lib/named
/dev/sda6      btrfs      80G   22G   58G  27% /boot/grub2/x86_64-efi
/dev/sda6      btrfs      80G   22G   58G  27% /usr/local
/dev/sda6      btrfs      80G   22G   58G  27% /boot/grub2/i386-pc
/dev/sda6      btrfs      80G   22G   58G  27% /var/spool
/dev/sda6      btrfs      80G   22G   58G  27% /opt
/dev/sda6      btrfs      80G   22G   58G  27% /var/cache
/dev/sda6      btrfs      80G   22G   58G  27% /srv
/dev/sda6      btrfs      80G   22G   58G  27% /var/log
/dev/sda6      btrfs      80G   22G   58G  27% /var/tmp
/dev/sda6      btrfs      80G   22G   58G  27% /tmp
/dev/sda8      vfat      340G  313G   27G  93% /mnt/Data
/dev/sda7      xfs       200G  143G   58G  72% /home
tmpfs          tmpfs     385M   44K  385M   1% /run/user/1000
/dev/sda3      fuseblk   287G  190G   98G  67% /run/media/jaques/OS
/dev/mmcblk0p1 vfat      7,5G  2,1G  5,4G  28% /run/media/jaques/9843-A435

但我希望每个设备只列出一次,无论它被安装多少次。

我想要一些更简单的东西,比如:

> df -hT 
Sist. Arq.     Tipo      Tam. Usado Disp. Uso%
/dev/sda6      btrfs      80G   22G   58G  27%
/dev/sda8      vfat      340G  313G   27G  93%
/dev/sda7      xfs       200G  143G   58G  72%
/dev/sda3      fuseblk   287G  190G   98G  67%
/dev/mmcblk0p1 vfat      7,5G  2,1G  5,4G  28%

可能吗?如何?

系统信息(如果需要):

OpenSuse Tumbleweed
Kernel 4.10.1

提前致谢。

linux disk-space-utilization shell-scripting unix-shell
  • 1 个回答
  • 110 Views
Martin Hope
Gaurav Bhaskar
Asked: 2016-12-26 22:55:02 +0800 CST

LD_LIBRARY_PATH 配置设置问题

  • 0

我面临一个奇怪但明智的问题,我有 2 个 ORACLE_HOME,第一个指向 ORACLE 数据库软件,第二个指向 ORACLE 客户端软件。

为什么我被迫这样做 - 原因是:在我的系统中,Pro *c 是从 ORACLE 数据库 ORACLE_HOME 编译的,但是 Pro *Cobol 是从 ORACLE 客户端 ORACLE_HOME 编译的。

编译 Pro *Cobol:

echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.2.0/client/lib:/opt/FJSVcbl64/lib:/opt/FJSVXbsrt/lib:/opt/FJSVXmeft/lib:/opt/FJSVcbl/COBOL/lib:/opt/FJSVcbl/COBOLRT/lib

编译 Pro *C

echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.2.0/db_1/lib:/opt/FJSVcbl64/lib:/opt/FJSVXbsrt/lib:/opt/FJSVXmeft/lib:/opt/FJSVcbl/COBOL/lib:/opt/FJSVcbl/COBOLRT/lib

如果我将路径即 /u01/app/oracle/product/11.2.0/db_1/lib 和 /u01/app/oracle/product/11.2.0/client/lib 都放在 1 LD_LIBRARY_PATH 中,则只有先到者才能获得成功的。

有没有办法解决这个问题?

对于临时修复,我在每个文件中创建了 2 个具有不同 LD_LIBRARY_PATH 的小脚本;所以我在编译 Pr *C 或 Pro *Cobol 之前调用这个脚本。

我只是不想调用任何脚本,只有 1 个 LD _LIBRARY_PATH 必须能够修复它。

让我知道。

谢谢!

linux unix oracle oracle-11g unix-shell
  • 2 个回答
  • 757 Views
Martin Hope
Thomas SV
Asked: 2016-08-18 09:06:10 +0800 CST

Unix:如何找到我登录的以太网接口的名称

  • 0

我们有多宿主服务器。为了简化事情,我想知道我登录的接口槽的 dns。(例如,设置 PS1,因此它可以在 scp 命令中使用)

我对这些问题的解决方案似乎相当复杂。=> 有没有更容易/更简单和更便携的方式?


ORIGIN_NAME=`who -m | cut -d\( -f2 | cut -d\) -f1`
ORIGIN_IP=`getent hosts $ORIGIN_NAME | awk '{ print $1; }'`
INTERFACE_NAME=`ip route get $ORIGIN_IP | grep dev | awk '{ print substr($0,index($0,"dev")+4,4); }'`
INTERFACE_IP=`ifconfig -a $INTERFACE_NAME | grep inet | awk ' { print $2; }' | cut -d: -f2`
getent hosts $INTERFACE_IP | awk '{ print $NF; }'
linux networking multi-homed unix-shell
  • 2 个回答
  • 156 Views
Martin Hope
Neil H Watson
Asked: 2016-06-30 11:39:47 +0800 CST

无法从后台 java 作业中获取 PID

  • 1

此语句的 PID 文件已创建,但始终为空。使用 -x 运行 shell 时,我看到 $! 为空,但最后 java 作业仍根据需要在后台运行。为什么pid不见了?

 su - $USER -c "nohup java $rest_api_opts -jar $app_home/$app_name \
   > /dev/null 2>&1& echo $! > $PID"
linux shell shell-scripting unix-shell
  • 1 个回答
  • 169 Views
Martin Hope
KinsDotNet
Asked: 2016-05-29 15:01:48 +0800 CST

为什么我的 awk 子命令失败?

  • 1

当我跑

df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}'

我收到以下错误:

awk: syntax error at source line 1
context is
    {sub(/%/, >>>  \ <<< "\");}
awk: illegal statement at source line 1

我似乎在 awk sub 上找不到任何文档。

df -hl | grep '/dev/disk1'

返回

/dev/disk1                         112Gi   94Gi   18Gi    85% 24672655 4649071   84%   /

据我了解,它应该返回已用磁盘空间的百分比。

unix unix-shell
  • 1 个回答
  • 1020 Views
Martin Hope
Justin Dearing
Asked: 2015-05-11 18:26:54 +0800 CST

在 PASE 中编辑 PATH

  • 3

我正在运行 ZendServer6 的 IBMi 上进行一些 PHP 开发。我必须通过 /usr/local/zendsvr6/bin/php-cli 的完整路径调用 PHP。是否有我可以在我的主目录中编辑的点文件或我可以从绿屏进行的一些配置更改,或者请求具有 QSECOFR make 的人将该路径添加到我的启动路径?

unix-shell
  • 1 个回答
  • 132 Views
Martin Hope
Chris Pick
Asked: 2010-03-21 15:50:45 +0800 CST

有没有办法防止后台任务的输出覆盖 shell 中的命令行?

  • 4

我希望能够在 shell 的后台运行任务,并且不让它们的输出到 stdout 或 stderr 覆盖底部的命令行。我经常需要运行其他命令来与后台进程交互,并且希望在同一个 shell 中这样做,而不必打开另一个终端或使用多路复用器来分割终端,如屏幕。

理想情况下,会有一些我不知道的设置(我通常使用 bash 或 ksh),但我可以使用新的或不同的 shell 或脚本。

我愿意接受任何建议并感谢任何帮助,谢谢。

编辑:感谢您的所有回答,但我的问题有点不清楚。我仍然需要观察后台任务的输出,我只是希望它不涵盖我可能在命令行上键入的任何新命令。理想情况下,后台程序的输出将显示在除了 shell 的底行之外的所有内容中,让我可以自由地在该行中构建新命令。

这类似于在底部窗口只有 1-2 行高的情况下水平拆分运行屏幕,但出于我的目的,使用屏幕具有以下缺点:

  • 我不需要/不希望进程在注销后仍然存在
  • 需要一两个额外的命令来设置(即使拆分和窗口大小是在 .screenrc 文件上完成的)
  • 我希望能够在不切换屏幕窗口的情况下使用 shell 的作业控制命令(即,至少在 bash 的情况下,作业、bg、fg、kill %1)

再次感谢您的帮助,这是我的第一个问题,我被答案的速度和数量所震撼!

unix shell unix-shell
  • 4 个回答
  • 201 Views
Martin Hope
Mech
Asked: 2010-02-17 17:09:45 +0800 CST

如何在启动并使用 ubuntu 登录后更改 VGA 模式?

  • 3

有没有办法在系统启动后更改控制台的屏幕分辨率?我已经看到很多关于在引导和 grub 配置中设置 vga= 行的内容,但我希望能够在登录后更改它。这将登录控制台,而不是通过 SSH。

在过去的 DOS 时代,我只会使用“模式”并对其进行更改。什么是unix对应物?

unix bash unix-shell
  • 2 个回答
  • 2314 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve