如何将 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 成功归档,依此类推。
我知道 gnome-system-monitor 即使由非 root 用户打开也可以显示带宽。但像iftop、nethogs等工具似乎都需要root才能工作。如何允许普通用户执行 gnome-system-monitor 的操作?我要使用的应用程序是一个每 n 秒输出 Mb/s 向上/向下的脚本,用于通过管道传输到状态行。
我正在玩 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。
我怎样才能做到这一点?
谢谢
我正在尝试在 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)
我该如何解决这个错误?
我正在编写一个 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)
关于如何将日期函数的结果转换为变量的任何想法?
我正在尝试获取在 /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) 我正在尝试创建一个字符串并将其传递给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)
编辑:我想通了。我有一个错字。
当我使用以下代码运行一个简单的 shell 脚本时:
#!/bin/sh
printf "\e[32m Hello World\n"
Run Code Online (Sandbox Code Playgroud)
我得到
\e[32m 你好世界
作为输出,而不是绿色的 Hello World 输出。
我正在尝试使用 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 脚本来管理设置用户配置文件。我似乎无法弄清楚为什么这个 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 ×10
bash ×6
linux ×2
bandwidth ×1
init ×1
shell-script ×1
sudo ×1
tar ×1
terminal ×1
ubuntu ×1