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ファイルに変換するには、このコマンドを使用します。