我在 Linux 服务器上使用以下脚本。这是给予:
: not found [No such file or directory]
这是脚本:
# ------------------------------------------------------------------
# K.Sugunan Host health check
# Description
#
# This script to initiate health check on servers.
# It will check for CPU, memory and some connectivity with
# up stream and down stream system.
#
# ------------------------------------------------------------------
# Applying initial variables and loading config parameters
DOCROOT=$(pwd)"/"
TIME_NOW=$(date +"%Y-%m-%d %H:%M:%S")
echo $DOCROOT
. $DOCROOT"config/main.sh"
. $DOCROOT"config/web.sh"
. $DOCROOT"config/telnet.sh"
echo $CPU_A
错误将如下所示:
: not found [No such file or directory]
: not found [No such file or directory]
/home/sugunan/phobos/
: not found [No such file or directory]
: cannot open [No such file or directory]os/
我使用以下方法来运行脚本
ksh poc.sh
sh poc.sh
./poc.sh
以上所有内容都给出了类似的错误。即使我包括#!/bin/bash
仍然存在错误。我#!/bin/ksh
也试过了#!/usr/bin/ksh
。所有这些都会产生错误。该服务器出现问题的原因可能是什么?
答案1
看起来空行包含一个不可见(不可打印)的字符,并且服务器正在尝试运行它,就好像它是命令的名称一样;因此出现错误: not found [No such file or directory]
。删除空行或确保它们确实是空的。
编辑:OP的评论证实确实如此,因为代码是在Windows下编写的。在 Windows 上,ASCII 文本文件以换行符 + 回车符结束每一行,而 UNIX 仅使用换行符。
要解决此问题,您可以:
- 直接将代码复制并粘贴到Linux下的编辑器上
- 确保将 Windows 编辑器设置为将行尾字符转换为 UNIX 标准
- 使用该
dos2unix
命令将 Windows ASCII 文件转换为 UNIX 文件