小编Nov*_*ser的帖子

当“else”跟在空的“then”子句之后时出现 Bash 语法错误

为什么下面的脚本不会执行,而是给出一个语法错误else

LOGS3_DIR=~/logs
if [ -d "$LOGS3_DIR" ]; then
 cd
 cd "$LOGS3_DIR"
 echo "$LOGS3_DIR"
 for filename in `find "." -mtime 1 -type f`
  do
  if lsof "$filename" > /dev/null
  then
    # file is open
  else
    echo "deleting $filename"
    rm "$filename"
  fi
 done
fi
Run Code Online (Sandbox Code Playgroud)

shell shell-script

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

如何从命令行创建多行文件?

如何在文件中输入以下内容:

Hi
abcd
Run Code Online (Sandbox Code Playgroud)

我尝试使用echo "Hi\nabcd" >> ab.txt,但在文件中它按原样编写(\n包括在内,而不是换行符)

echo escape-characters

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

删除带有 .nfs 文件的文件/文件夹

很多时候当我删除一个文件夹时,它说由于.nfs文件而无法删除。

Error - Device or resource busy
Run Code Online (Sandbox Code Playgroud)

如何删除忽略这些错误的文件夹(rm命令中有任何标志)?或者我必须找出使用它的进程,然后首先终止该进程?

在这种情况下,我如何才能删除整个目录?

directory nfs rm

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

如何监听特定端口并返回200状态

如何在我的服务器上侦听特定端口并在有人尝试连接时仅返回 HTTP 200 状态?

可以nc用来返回 HTTP 状态吗?

networking

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

保持 XML 文件计数的作业

我的朋友在一家 IT 公司工作,他需要在一个目录(包括子目录)中保存 XML 文件的数量。

然而,使用ls -LR | grep .xml或类似的计数需要很多时间,因为文件的数量以数百万计。

我在想什么是更好的方法?

某种后台进程是否可以解决这个问题,以便每当创建新文件或修改时间更改时,它都会影响计数器(文件数)?

linux files

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

为什么for循环不在目录上执行

在下面的脚本中,第一个for循环按预期执行,但不是第二个。我没有收到任何错误,脚本似乎只是挂起。

HOME=/root/mydir

DIR=$HOME/var
DIRWORK=$HOME/Local

for f in $(find $DIR -type f); do

    lsof -n $f | grep [a-z] > /dev/null

    if [ $? != 0 ]; then
    echo "hi"       
    fi
done


for i in $(find $DIRWORK -type d -name work); do
    echo "2"
done
Run Code Online (Sandbox Code Playgroud)

bash for

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

找不到 Bash 命令错误

为什么以下脚本会出现以下错误:

./check1.sh: line 10: Hi,: command not found  
./check1.sh: line 21: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

检查1.sh:

#!/bin/bash


subj="host `hostname`"
healthcheckstatus=$(curl -s -o /dev/null -w '%{http_code}' http://localhost)

body="Hi, Application is up"
body1="Hi, Application is down"

mailbody=$([ "$applicationstatus" == 200 ] && $body || $body1)


if [ $healthcheckstatus != "200" ]
then
mail -s "$subj" me@domain.com <<EOS
`echo -e $mailbody`
EOS
fi
echo "email subject ::$subj"
echo "email body ::$mailbody"
Run Code Online (Sandbox Code Playgroud)

shell shell-script

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

没有家目录,用HOME=/登录

使用以下命令在 Ubuntu 11.04 中创建了一个新用户:

$ useradd -d /home/dummy -m dummy
Run Code Online (Sandbox Code Playgroud)

现在,在此之后我使用 设置了它的密码passwd dummy,但是当我使用su - dummy. 我收到消息:

没有家目录,用HOME=/登录

如果我检查用户帐户虚拟的条目/etc/passwd

 $ cat /etc/passwd | grep dummy
dummy:x:1001:1001::/home/dummy:/bin/bash**
Run Code Online (Sandbox Code Playgroud)

我手动创建了目录以通过mkdir /home/dummy.

现在,错误似乎已解决,但我很惊讶为什么没有bash_profile在该主目录中创建类似的文件。

linux useradd

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

从 SFTP 获取文件并运行它的脚本

我们有 5 台服务器运行我们的代码:A、B、C、D 和 E。

从本地机器,我们将文件 sftp 到 A。然后

ssh id@A
su - applicationname
sftp id@A
get <file>
bye
tar -xzf <file>
logout
logout
Run Code Online (Sandbox Code Playgroud)

我们为其他 B 到 E 申请的程序相同。

有什么办法可以使用脚本来简化这个吗?

我们已要求 linux 团队提供无密码身份验证。但是我们不知道如何使用脚本在 SSH 会话中执行 sftp。

scripting ssh sftp authentication

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

优化文件列表和删除方式

我需要列出和删除 .php、.xml 文件。为此,我正在使用find命令。

列出: find . -type f -name \*.php -print0

删除 : find . -type f -name \*.php -print0 | xargs -0 rm -r

因为我跑find了两次。是否可以存储第一个命令的结果然后在第二个命令中重用?

谢谢。

scripting find shell-script

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