标签: bash

查找占用磁盘空间的文件/文件夹

可能的重复:
我如何确定什么占用了这么多空间?

我刚刚让一台旧服务器瘫痪,因为它的驱动器空间不足。我已登录到 shell,并且正在尝试查找更多要删除的未使用文件。

是否有 shell 命令、脚本或应用程序可以显示最大的文件/文件夹?

maintenance linux files bash

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

回声 $? 远程执行时不起作用

当我执行如下命令时,它会按预期给我一个输出,但是当我在远程服务器上运行相同的命令时,它总是给我echo $?作为0.

locally
# <some command>
# echo $?

Remotely
# ssh server " <some command >; echo $? "
Run Code Online (Sandbox Code Playgroud)

现在,在远程执行的情况下,我总是得到0echo $?输出。

scripting bash shell-scripting

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

以 sudo 身份通过 SSH 运行多个命令

我试图通过 SSH 以 sudo 身份运行命令,但没有成功:

ssh -t -p 2222 name@server /usr/bin/sudo << EOF
  chmod u-r /xy 
  chmod +x /xy
  /xy
  sleep 5
  ps aux | grep xy
  sleep 5
  exit
EOF
Run Code Online (Sandbox Code Playgroud)

这是行不通的。没有 -t 和 /usr/bin/sudo:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

单行命令正在工作:

ssh -p 13001 -t name@server 'sudo /xy'
Run Code Online (Sandbox Code Playgroud)

linux ssh bash

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

丢弃总数的 50% 数据包的方法

在我的机器上,我希望只有 50% 的数据包会收到。

我正在开发 centOS 5.5。

为此,我在网上搜索。我得到了 IPtables。我使用了 IPtables 的随机补丁。

命令

sudo iptables -A INPUT -p icmp --icmp-type echo-request -m random --average 50 -j DROP
Run Code Online (Sandbox Code Playgroud)

输出

iptables v1.3.5: Couldn't load match `random':/lib64/iptables/libipt_random.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
Run Code Online (Sandbox Code Playgroud)

但上面表明该库丢失了。

然后,我怎样才能丢弃总数的 50% 数据包。请更正我的上述方法或建议新的方法。

告诉我如何将这些库添加到 IPtables 现有包中。[我试过了,但在互联网上找不到这些库]

编辑 1

我还需要记录丢弃的数据包,因此我更改了 iptables 规则集,如下所示:

iptables -L -n -v 输出是 [这是在系统 1 上运行]

Chain INPUT (policy ACCEPT 1875K packets, 114M bytes)
 pkts …
Run Code Online (Sandbox Code Playgroud)

linux bash iptables centos packet-capture

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

在 cron 作业中使用“which”命令

我有一个每天在 Linux 服务器上运行一次的 cron 作业,并且在它执行的脚本中有一个测试:

# Validate ffmpeg is installed
if [ $(which ffmpeg | grep -c "ffmpeg") -eq 0 ]; then
    echo "error: ffmpeg is not installed!" | tee -a "$log"
    exit 1
fi 
Run Code Online (Sandbox Code Playgroud)

每天当我检查日志文件时,消息ffmpeg is not installed!都在日志中,因此工作尚未执行。如果我which在 shell 中运行测试一切正常,当我执行脚本时一切正常。

cron 是否有内在的东西阻止它正确使用which命令?

bash ffmpeg path

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

Linux 日期转换为不同的时区

Linux 服务器托管在 EST 时区。但我想将 date 命令的输出转换为 IST(印度标准时间 +5:30 小时)格式并在 shell 脚本中使用它。是否有任何选项可用于 date 命令来执行此操作或手动添加/减去小时数。

bash time timezone date

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

如何在centos中使用crontab执行bash脚本?

我的 bash 文件不是由以 root 身份创建的 cronjob 执行的。cronjob 设置如下所示

0 0 * * * mysql_backup.sh
Run Code Online (Sandbox Code Playgroud)

是否需要使用 bash 命令进行 decalared 0 0 * * * bash mysql_backup.sh?如果我手动执行我的 bash 脚本而sudo bash mysql_backup.sh不是它的工作。

我一直在使用创建 cronjobsudo crontab u root -e并且 bash 文件位于 centos 的根目录中

mysql bash cron

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

如何在客户操作系统中检测 vmware 工具是否已过期?

我试图在虚拟机的来宾操作系统中找到一种通用的方法来检查 VMware Tools 是否已过时。

到目前为止,我发现的最好方法是检查“vmware-toolbox-cmd -v”的输出,并将其与预期的版本号进行比较。例如:

if [ "`vmware-toolbox-cmd -v`" = "8.3.18.20074 (build-975338)" ]
then
   echo "The vmware tools are OK"
else
   echo "The vmware tools are out of date"
   ...
   ...
fi
Run Code Online (Sandbox Code Playgroud)

但是版本号会随着时间而变化,所以我每次都需要在每个虚拟机上更新脚本。或者,也许我可以使用 wget 或 curl 从某个共享资源中读取“预期版本号”。

你能帮我找到更好的方法吗?

谢谢

bash vmware-esx vmware-esxi

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

如果条件比较无法与相同值字符串进行比较,则 Shell 脚本命令输出

我正在合并一个脚本片段,它通过以下方式确定 Android 版本: adb shell getprop ro.build.version.release 返回:4.1.24.0.4

该代码段目前如下所示:

if [ "$(adb shell getprop ro.build.version.release)" == "4.1.2" ]; then
    rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release)" == "4.0.4" ]; then
    rw_path="/data/local/"
fi
echo $rw_path
Run Code Online (Sandbox Code Playgroud)

我认为 adb 可能会通过 stderr 返回值,就像它使用推/拉输出一样,所以我也尝试了这个(但不确定这是否是正确的方法):

if [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.1.2" ]; then
    rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.0.4" ]; then
    rw_path="/data/local/"
fi
echo $rw_path
Run Code Online (Sandbox Code Playgroud)

尝试了 -eq 运算符而不是 ==,但它警告“预期为整数表达式”。

然后我尝试了这个以确保它确实比较了一些东西:

version=$(adb shell getprop ro.build.version.release 2>&1)
if …
Run Code Online (Sandbox Code Playgroud)

scripting unix shell bash

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

如何删除文件名有 utf-8 字符问题的文件

我想通过bash rm命令从服务器中删除文件。

这是一个示例文件Test_ Mürz.jgp

如何大规模删除文件名中带有此类字符问题的文件……尤其是当您不知道字符的位置时。

linux bash rm

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