我在一台服务器上托管多个域。
我希望能够更改 bash 提示符中显示的主机名,以指示我在 ssh 进入服务器时选择的主机名。
我的提示如下:
\u@\h
Run Code Online (Sandbox Code Playgroud)
这显示为:
user@hostname
Run Code Online (Sandbox Code Playgroud)
我如何更改\h以显示我登录的域(blah.net、hmm.com 等)?
我有一个远程 FTP 服务器,我通过 cronjob 存储一些备份。
问题是我只有一点空间,所以我进行增量备份。我想将备份保留大约 14 天。
除了 FTP 之外,我没有任何其他访问服务器的权限,而且我现在不知道如何删除超过 x 天的文件。每个文件都有一个名称,其中包含日期
yxzNamezxy-date-y-m-d.tar.bz2 (datev-20100111.tar.bz2(
Run Code Online (Sandbox Code Playgroud)
希望在这里得到一些帮助。
干杯并感谢您希望得到的答案,
丹尼斯
/编辑
我正在尝试使用这部分代码的答案中提到的curl 东西
curl ftp://$FTP_SERVER --user $FTP_USER:$FTP_PASS --list-only > files.tmp
declare -a aFiles
let iCount=0
exec < files.tmp
while read sLine
do
aFiles[$iCount]=$sLine
((iCount++))
done
echo -e "\n Files: \n\n\n"
echo ${aFiles[@]}
echo -e "\nfor ...\n\n\n"
for sFile in $aFiles
do
echo -e "\nFile:" $sFile
done
Run Code Online (Sandbox Code Playgroud)
但第二个循环没有给我超过 1 个文件名
干杯,
丹尼斯
如何阻止apache执行bash脚本?任何 php 脚本都无法在 bash 中执行命令(例如将添加链接到我的 php 和 html 文件的命令)。有没有办法做到这一点??
编辑:我脑子里有任何 bash 命令,而不仅仅是 .sh 文件
我正在尝试使用解释器运行 shell 片段bash。使用该-c标志允许我直接向命令行提供命令,而无需写入文件。这是我的使用所必需的。
工作示例:
$ bash -c 'free -m'
Run Code Online (Sandbox Code Playgroud)
问题是我想要运行的实际 shell 片段中有单引号。
find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
Run Code Online (Sandbox Code Playgroud)
我认为简单地转义引号就可以了:
$ bash -c 'find / -type f -size +50M -exec ls -lh {} \; | awk \'{ print $9 ": " $5 }\''
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。它不执行该命令。
此外,同样的问题,我需要能够从命令行执行 Node.js,而不写入文件。
$ node -e 'console.log("hello");'
Run Code Online (Sandbox Code Playgroud)
上面的方法有效,但是:
$ node -e 'console.log('hello');'
and
$ node -e 'console.log(\'hello\');'
Run Code Online (Sandbox Code Playgroud)
两者都打破。
有想法吗?谢谢。
谁能告诉我 /proc/diskstats 中的第 11 个字段吗?文档说它是对 I/O 花费的毫秒数进行加权。是不是像一秒钟内 DiskIO 花费的毫秒数?
我每 200 毫秒记录一次该值,并从中减去前一个值,观察到该值高达 7000。我需要绘制一张显示磁盘 IO 速率的图表。这是脚本:
#!/bin/bash
PREV_TOTAL=0
echo "" >> $1
while true; do
numbers=( $(tail -3 < /proc/diskstats | head -2 | awk '{print $14}' ) ) ;
let "TOTAL=$((${numbers[0]} + ${numbers[1]}))"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
time=`date +%s%N`
echo "$time $DIFF_TOTAL" >> $1
PREV_TOTAL="$TOTAL"
# Wait before checking again.
sleep 0.2
done
Run Code Online (Sandbox Code Playgroud)
有人能解释一下这个领域吗?
从statusfile.logto添加内容时,我试图转义双引号statusfile_truncated.log。
我环顾四周,只是越来越困惑。你将如何实现它?
这是我到目前为止得到的:
#!/bin/bash
statusfile="statusfile.log"
statusfile_truncated="statusfile_truncated.log"
tail -n 50 $statusfile >> $statusfile_truncated
Run Code Online (Sandbox Code Playgroud)
statusfile.log 的内容:
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. "/xxxxxxxxxxxxx" is current directory.
Run Code Online (Sandbox Code Playgroud)
statusfile_truncated.log 的内容应该是:
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 CWD successful. \"/xxxxxxxxxxxxx\" is current directory.
2017-05-15 22:36:18 test.somedomain.com <--- 250 …Run Code Online (Sandbox Code Playgroud) 我试图理解@sysfault 在此评论中的“oneliner” :
/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
我尝试了以下变化......
不同的 $$ 内外:
/bin/bash -c 'echo $$ && exec sleep 5' ; echo $$
14408
29700
Run Code Online (Sandbox Code Playgroud)
相同的pid(但在后台):
$ /bin/bash -c 'echo $$ && exec sleep 5' & echo $!
[1] 8309
8309
$ 8309
[ 1 ]+ Done /bin/bash -c 'echo $$ && exec sleep 5'
Run Code Online (Sandbox Code Playgroud)
$$ 和 $ 的不同 pid!:
/bin/bash -c 'echo $$ && exec sleep 5 & echo $!'
6504
6503
Run Code Online (Sandbox Code Playgroud)
Kill …
我想从 bash 中的 base64 编码字符串运行命令。例如bHMgLWwgLwo=将等于ls -l。我该怎么做呢?
我想从文件中计算一些信息,但除法不起作用。如果我将 更改/为 a+或-,则此计算正确。有任何想法吗?
#!/bin/sh
FILE=/tmp/stats
for EMPTY in $(cat $FILE |sed '1!d'); do (echo "Empty Servers $EMPTY | Empty-Servers=$EMPTY;"); done
for SERVERS in $(cat $FILE |sed '2!d'); do (echo "Total Servers $SERVERS | Total=$SERVERS;"); done
PERCENT=$(((EMPTY / SERVERS)*100))
echo $PERCENT
Run Code Online (Sandbox Code Playgroud) 如果我有这样一个带有符号链接的路径:
/this/one/two/three
是否有一个快速的单行代码来确定路径中的另外一个段是否是符号链接?例如,我想检测上面示例中的this、one、two或three是否是符号链接。
一种方法是将包含符号链接的路径与readlink -f <path>. 想知道是否有更快的方法。