标签: shell

bc:使用带有 bash 变量的“scale”

很容易,我正在编写一个脚本,它需要一些浮点后有 2 位数字的值。尝试使用bc我不明白如何使用“比例”,即

A=12 ; bc <<< $(($A/5))
Run Code Online (Sandbox Code Playgroud)

这是正确的,但添加“比例”会导致错误:

A=12 ; bc <<< 'scale=2;$(($A/5))'

(standard_in) 1: illegal character: $
(standard_in) 1: illegal character: $
Run Code Online (Sandbox Code Playgroud)

scripting linux shell bash

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

为什么 cd 不会更改 crontab 中的当前目录?

在我的用户的 crontab 中,在 CentOS 系统上,我有这样的东西:

58 12 * * * cd /home/joe/dev; echo `pwd` | logger
Run Code Online (Sandbox Code Playgroud)

这在 /var/log/messages 中输出:

Feb 19 12:58:01 srv01 joe: /home/joe
Run Code Online (Sandbox Code Playgroud)

而不是输出:

Feb 19 12:58:01 srv01 joe: /home/joe/dev
Run Code Online (Sandbox Code Playgroud)

为什么输出时不保留目录pwd

shell centos cron

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

带重定向的 lxc-attach 命令

我正在为 Proxmox 4 服务器设置一个从 Proxmox 3.4 迁移 OpenVZ 转储的脚本。脚本 scp 备份,恢复它们等等。

在此过程中,我想擦除 /etc/network/interfaces 并使用“pct set”设置一个新的。

我的问题如下:要将默认基本配置写入 /etc/network/interface,我使用 lxt-attach。我错误地使用了这个:

lxc-attach -n 101 -- echo "auto lo" > /etc/network/interfaces
Run Code Online (Sandbox Code Playgroud)

你明白了:我擦除了主机的网络配置。那么有人可以告诉我如何执行此命令:

echo "auto lo" > /etc/network/interfaces
Run Code Online (Sandbox Code Playgroud)

在使用 lxc-attach 的容器中?

非常感谢 ;)

shell redirection proxmox

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

bash if 语句在 crontab 作业中出现意外行为

这是脚本

bash --version | head -n1
if [ "$1" == "now"  ]
then
    echo if now
    execut job
else
    echo else "_"$1"_"  # make sure we are not picking any spaces
    if [ condition  ]
    then
    execut something else
    fi
fi

./script now
if now
Run Code Online (Sandbox Code Playgroud)

如果从交互式 shell 运行,则按预期工作。但是,如果从 cron as 调用,则 if 会转到 else 块

* * * * *   root    /home/user/./script now >> /tmp/log
cat /tmp/log
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
else _now_
Run Code Online (Sandbox Code Playgroud)

也与“-eq”相同。

我是否因为没有吃早餐而错过了一些非常简单的事情?

运行 Ubuntu 14.04LTS。

linux shell bash cron conditional

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

如何识别古老的 KornShell 版本?

我们有一个人退休了,留下的文件有点轻描淡写。需要一点帮助来识别和使用旧的客户端-服务器系统。

服务器本身由几位优秀的 Unix 管理员维护。我们目前在服务器端运行 AIX 7.1.0.0。

然而,当我们使用专有的 SSH 客户端登录时,我们会看到一个看起来很熟悉但在其他方面很奇怪的 shell。外壳本身似乎是 KornShell:

echo $0
-ksh
Run Code Online (Sandbox Code Playgroud)

但是外壳不响应正常的外壳命令(无法向上/向下点击以调用最近的命令,无法正常退格,无法使用制表符自动完成等)

使用最近的命令调用 ESC + k

如果ESC键被敲击,则终端停止响应于输入,直到ias,或cc被压(或k,如已经提到带来了最近的命令)。

要编辑调用的命令,我们必须点击 SHIFT + UP

Backspace 实际上是RIGHT箭头,要清除输入的命令,我们必须点击SHIFT + RIGHT

whence命令不可用,并且此页面上发现 KSH 版本的技术均无效。

我们办公室有人建议这是某种内联vi

其他人有什么建议吗?有没有可用的文档?

ibm shell ksh aix unix-shell

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

Linux - 限制用户只能使用 ssh 中的一个应用程序

这是我不久前研究过的,并找到了一些有用的信息......但现在我实际上需要这样做,当然我再也找不到我看到的指南了。

无论如何,情况是这样的。我有一个通过 SSH 使用 ncurses 菜单运行的程序。我希望用户能够通过 SSH 登录到该程序,但仅限于该程序。

我必须做什么才能使这种情况成为可能?

  • 用户打开 Putty
  • 用户使用用户名和密码登录 Linux 服务器
  • 登录时,他们直接进入该程序
  • 即使程序关闭、崩溃、取消等,用户也会被强制从系统注销。

我的目标是完全限制他们看到命令行,并且仅限于该程序。这可能吗?我/我将如何去做?

linux ssh login shell

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

Ansible 任务写入本地日志文件

使用 Ansible 我希望能够将运行命令的任务的 sysout 写入本地(即在托管服务器上)日志文件。目前我只能使用这样的任务来做到这一点:

- name: Run my command
  shell: <command> <arg1> <arg3> ... |tee -a <local log file>
Run Code Online (Sandbox Code Playgroud)

这样做的原因是需要很长时间才能完成(即我们不能等到它完成才能获取其输出)并且希望在其执行期间收集输出。

是否有任何“Ansible”方法可以在不使用tee管道的情况下在执行期间将命令的 sysout 重定向到本地日志文件?

linux shell ansible ansible-playbook

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

Shell 脚本在其中一个守护进程死亡时执行某些操作?

我只需要构建两个在不同端口上运行的守护进程实例。假设它们都为某些应用程序提供关键任务。

当其中一个无法提供服务时,如何执行一些自动任务(例如 shell 脚本)来检查两个守护进程?

什么样的脚本可以始终检查守护程序的生命周期,并且如果其中一个守护程序意外停止,也许可以执行其他一些作业?

scripting shell daemon

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

如何找到实际的工作目录?

当我尝试在 linux 命令提示符下(使用“pwd”)查找当前工作目录时,它将显示包含符号链接的目录。例如,如果我创建一个符号链接并使用它来访问该目录:

ln -s /mnt/backup /home/biotech/backup
cd /home/biotech/backup
pwd
Run Code Online (Sandbox Code Playgroud)

这将显示“/home/biotech/backup”而不是“/mnt/backup”。这发生在 Ubuntu 和 Cygwin 上。

我可以使用什么命令来查看后者,即“真实”目录?

linux shell symbolic-link

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

执行shell脚本时如何避免./?

我曾经知道一种运行我的 shell 脚本的方法,只要输入我的主文件夹或桌面中的名称即可。我讨厌打字./myscript.sh。我希望能够只输入myscript.sh. 我怎样才能修复我的终端来做到这一点?

我正在使用 GNOME 终端和 Ubuntu 9.04。

shell bash path

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