标签: bash-scripting

Bash tar 并输出到日志文件

如何将 TAR 操作写入日志文件?

tar -czvf arh.tar.gz public_html > 1.log
Run Code Online (Sandbox Code Playgroud)

TAR -czvf 成功了,谢谢大家!

现在在 bash 脚本中:

for i in */ ; do
    sitefolder="$HOME/domains/${i%%/}/public_html"
    if [ -d "$sitefolder" ]
    then
        ( tar -czvf $tbackups/$i".tar.gz" public_html >> $logs/backups.log ; )
    fi
done
Run Code Online (Sandbox Code Playgroud)

我如何在日志文件中进行输出,例如:

domain.com 成功归档,domain1.com 成功归档,依此类推。

bash tar bash-scripting

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

非root用户如何通过命令行监控网络流量?

我知道 gnome-system-monitor 即使由非 root 用户打开也可以显示带宽。但像iftop、nethogs等工具似乎都需要root才能工作。如何允许普通用户执行 gnome-system-monitor 的操作?我要使用的应用程序是一个每 n 秒输出 Mb/s 向上/向下的脚本,用于通过管道传输到状态行。

linux bandwidth network-monitoring bash-scripting

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

如何在 Bash 脚本中同时获取命令的结果及其返回码?

我正在玩 Bash 脚本。我想将命令的结果分配给一个变量,并将其返回代码分配给另一个变量。

前任。:

line_count=$(cat "$filename" | wc -l) #If the file does not exist, an error code is returned
cmd_return_code=$? #I want to assign the previous error code to a variable
Run Code Online (Sandbox Code Playgroud)

我尝试如上所示使用$?,但它捕获了前一个赋值本身的返回码,即 0。

我怎样才能做到这一点?

谢谢

bash bash-scripting

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

如何使用 ssh 在远程计算机上运行 sudo 命令?

我正在尝试在 ubuntu 主机上远程运行 shell 脚本。

我可以使用 me@host ssh 到机器上。

在远程计算机上,我可以运行 sudo 命令而无需输入密码。

我可以使用 rsh 在远程主机上运行 shell 命令

所以现在我输入 sudo 命令并收到错误

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper
Run Code Online (Sandbox Code Playgroud)

我运行的命令如下:

ssh user@hostIPAddress  "cd /opt/somewhere && sh -v -v ./install.sh"
Run Code Online (Sandbox Code Playgroud)

install.sh 包含一个需要 sudo 命令的命令

#!/bin/bash
  
sudo pm2 stop someprocess
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

linux sudo ubuntu bash-scripting

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

执行一个命令并将结果放入一个变量中......所有这些都在一个 bash 脚本中

我正在编写一个 bash 脚本,该脚本在复制新文件之前备份配置文件。

这是我的代码段的样子:

mv ~/myStuff.conf  ~/myStuff.conf.bak
cp ~/new/myStuff.conf ~/myStuff.conf
Run Code Online (Sandbox Code Playgroud)

每次运行此脚本时,我都希望备份的文件名中有一个 unix 时间戳。我试过这个

DATEVAR=date +%s
mv ~/myStuff.conf  ~/myStuff.conf.$DATEVAR.bak
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为 date 函数不执行并且 bash 将其视为字符串,结果文件最终被

myStuff.conf.date+%s.bak
Run Code Online (Sandbox Code Playgroud)

关于如何将日期函数的结果转换为变量的任何想法?

bash bash-scripting

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

start-stop-daemon 在命令行中工作,但在 /etc/init.d 脚本中不起作用

我正在尝试获取在 /etc/init.d/ar_sendmail 中工作的启动脚本(用于名为 ar_sendmail 的 ruby​​ gem):

#! /bin/sh

echo "in /etc/init.d/ar_sendmail"
DIR=/home/max/work/e_learning_resource/trunk
PATH=/var/lib/gems/1.8/bin
DAEMON=/var/lib/gems/1.8/bin/ar_sendmail
DAEMON_OPTS="-e production -d --batch-size 100 --delay 150"
NAME=ar_sendmail
DESC=ar_sendmail
PID_FILE=/home/max/work/e_learning_resource/trunk/shared/log/ar_sendmail.pid


test -x $DAEMON || exit 0
set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon -d $DIR --start --quiet --pidfile $PID_FILE \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        kill -TERM `cat $PID_FILE`        
    rm $PID_FILE
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        kill -TERM …
Run Code Online (Sandbox Code Playgroud)

bash init bash-scripting

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

Bash shell 字符串连接

我正在尝试创建一个字符串并将其传递给rm,但我在使其工作时遇到了一些困难。我想删除MY_PATH. 以下是我尝试过的。

MY_PATH=/my/directory/
echo ${MY_PATH}'*' # This works as expected.
rm -vfr ${MY_PATH}'*' # This doesn't.
Run Code Online (Sandbox Code Playgroud)

编辑:我想通了。我有一个错字。

bash bash-scripting

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

如何阻止 printf 在 shell 脚本中打印转义码?

当我使用以下代码运行一个简单的 shell 脚本时:

#!/bin/sh 
printf "\e[32m Hello World\n"
Run Code Online (Sandbox Code Playgroud)

我得到

\e[32m 你好世界

作为输出,而不是绿色的 Hello World 输出。

terminal bash shell-script bash-scripting

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

我怎样才能制作一个 bash 脚本来执行 apt-get?

我正在尝试使用 bash 脚本自动化一些配置,我以前从未这样做过,所以我尝试了像 a 这样简单的东西Hello World!,一切都很好,但后来我尝试了这样的事情:

#!/bin/bash
sudo su
apt-get purge postfix
Run Code Online (Sandbox Code Playgroud)

它没有做任何事情,我检查并仍然安装了 postfix,并且在任何时候它都要求输入我的任何条目,我只是尝试过,apt-get但我会做一些事情ssh-keygen,甚至写cat一些我猜想用的文件或其他东西,如何我可以让脚本工作并看看发生了什么吗?

bash-scripting

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

Bash 脚本错误

我正在尝试编写一个 bash 脚本来管理设置用户配置文件。我似乎无法弄清楚为什么这个 if 语句不起作用。我有代码:

#!/bin/bash
#check if programs are installed
( TMUX=$(tmux -V) && echo "tmux at version $TMUX" ) || echo "tmux not installed"
if [ $TMUX != "1.8" ]; then
    echo "installing tmux"
fi
Run Code Online (Sandbox Code Playgroud)

但无论我尝试什么,我都会不断收到错误消息

test.sh: line 6: syntax error near unexpected token `fi'
test.sh: line 6: `fi'
Run Code Online (Sandbox Code Playgroud)

关于什么可能导致这种情况的任何想法?

bash-scripting

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