标签: bash

使用 ssh 在远程服务器上运行本地脚本而不必担心引号

所以我一直在远程服务器上运行本地脚本:

ssh user@server "`cat local-script.sh`"
Run Code Online (Sandbox Code Playgroud)

但是,今天我有一个包含单引号和双引号的脚本。这会导致脚本失败,因为 的输出cat local-script.sh用引号括起来。如果不修改脚本本身,有没有更好的方法来处理这个问题?

我认为这可能有效:

ssh user@server $(<local-script.sh)
Run Code Online (Sandbox Code Playgroud)

但似乎并没有做任何事情......

ssh bash

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

如果我知道一个进程的 PID 号,我能知道它的名字吗?

如果我有PID一个进程的编号(在 UNIX 机器上),我如何知道其关联进程的名称?我需要做什么?

unix shell bash process pid

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

如何从 init.d 脚本检测挂载点是否存在?

重新启动后,我使用 init.d 脚本从挂载的网络共享 (autofs) 执行应用程序。该脚本在尝试执行命令之前等待 30 秒,以等待网络/挂载点启动。

在执行命令之前,我想以某种方式检测网络是否已确定并已确定安装。

您对如何使用此脚本实现此目标(在 CentOS 6.4 中)有何建议?

这就是我现在所拥有的:

#!/bin/bash
#
# chkconfig: 3 95 5
# description: My app
# processname: my-app
#

# Sleep for 30 seconds before attempting to execute command
sleep 30s

# Get function from functions library
. /etc/init.d/functions

# Start the service my-app from autofs mount
start() {
        echo -n "Starting my-app: "
        /share/path/my-app --log /tmp/log.log --supersede
        ### Create the lock file ###
        touch /var/lock/subsys/my-app
        success $"my-app startup"
        echo
} …
Run Code Online (Sandbox Code Playgroud)

linux bash rhel6 centos6.4

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

如何通过手动故障转移处理 IP?

我有两台相同的存储主机,其中主服务器是用户可以访问的唯一主机。如果 master 失败,那么我想手动更改 DHCP 地址,所以不是master指向10.10.10.10它,而是指向10.10.10.11.

有依赖IP地址的复制脚本,所以如果master改变了IP地址,那么我必须在脚本中修改IP,所以数据仍然从master复制到slave。

切换 IP 地址和编辑脚本是一项非常容易出错的任务。这种手动故障转移是如何完成的,有没有一种常见的做法?例如,通过添加某种抽象层?

linux ubuntu bash failover centos

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

BASH:coproc 的替代品

我有一些脚本使用coproc来控制子进程的stdout/stdin。不幸的是,coproc 是在 Bash 4.0 中引入的,并且在我使用的许多系统上,都有较早版本的 bash。

coproc 有什么替代品吗?

bash stdin stdout

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

从 ssh 拖尾文件并镜像到本地文件

要通过 ssh 拖尾文件,我可以使用

ssh  -t remotebox "tail -f /var/log/remote.log"
Run Code Online (Sandbox Code Playgroud)

但是,可以将尾部与本地文件同步吗?那么一个文件自动镜像tail命令的更新呢?

linux ssh bash command-line-interface tail

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

仅在 bash 中列出 linux 分区名称

linux 上的 df 列出了以下分区统计信息。

-bash-4.1# df
文件系统 1K-blocks Used 可用使用% Mounted on
/dev/sda3 1918217320 1473337340 347440136 81% /
tmpfs 32970328 0 32970328 0% /dev/shm
/dev/sda1 482214 148534 308781 33% /boot
/dev/sdd1 1922860884 1638599284 186585876 90% /disk5
/dev/sdc1 1922858352 1474925416 350257336 81% /disk2
/dev/sdb1 1922858352 1028783752 796399000 57% /disk4

如果我想获取分区名称的列表,例如:“/dev/sda3 /dev/sda1 /dev/sdc1...” 我该如何在 bash 中执行此操作?

linux bash df

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

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万
查看次数

在 sendmail 中设置 FQDN

这篇博文中,他建议

echo '127.0.0.1    localhost EXAMPLE.my_domain localhost.localdomain EXAMPLE' >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)

但以

但这是一种不太理想的方法,因为它可能有一些副作用。

这个问题中,没有关于解决方案的明确答案。

为 sendmail 提供 FQDN 的推荐方法是什么?

email linux bash sendmail

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

在变量中查找带有参数的命令

> find /etc -name 'shells'
/etc/shells     # good !!

> SEARCH="-name 'shells'"; find /etc $SEARCH
# nothing found - bad !!
Run Code Online (Sandbox Code Playgroud)

为什么“find”命令不能接受变量中的参数?

其他命令在这种模式下工作正常。它可能与空格和解析有关。我如何首先在变量中构造参数,然后使用此参数执行“查找”?

要清楚,我想制作 -name xxxx -o -name yyyyy -o -name zzzzz 的链,然后通过一次运行找到所有文件

bash find

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