質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.86%

  • Linux

    3288questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

HTMLファイルの中のシェルスクリプトが起動してくれません

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,214

kayotinkome

score 1

HTMLファイルの内容

<html>
<head>
</head>
<pre>
今回が<!--#exec cmd="./count.sh" -->回目に該当する
</pre>
</html>

count.shの内容

#!/bin/sh
if [ -f lookfile.txt ];then
sleep0.19
else touch lookfile.txt
#!/bin/bash
CNT_FILE=number.txt
if[ ! -f $CNT_FILE ]
then
echo 0 > $CNT_FILE
fi
read hoge < $CNT_FILE
expr $hoge + 1 > $CNT_FILE
echo $hoge

webサーバ apache2
OS        Windows10

今回が<!--#exec cmd="./count.sh" -->回目に該当する

<!--#exec cmd"=./count.sh"-->

上記の部分が表示されません。

エラーメッセージの表示はありません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Y.H.

    2017/01/11 10:49 編集

    出力結果(実行結果)は正確に記載しましょう。 「上記の部分が表示されません。」とはブラウザーの「ソースを表示」で表示されるHTMLが「今回が<!--#exec cmd="./count.sh" -->回目に該当する」と「今回が回目に該当する」どちらになっているのでしょうか?

    キャンセル

  • kayotinkome

    2017/01/11 10:52

    今回が回目に該当するとなっています

    キャンセル

  • Y.H.

    2017/01/11 11:05

    OSがWindows10なのであればタグをLinuxからWindowsなどへ修正してください。

    キャンセル

回答 3

+2

SSI の設定はできていますか?

SSI を許可するためのサーバの設定に従って設定できているかを確認してください。

また、 Apache のログファイルにはエラーメッセージは出ていませんか?


ちなみに

if [ -f lookfile.txt ];then
sleep0.19
else touch lookfile.txt

このコードでは、排他制御できていないと思われます。

https://teratail.com/questions/46283

のときの私の回答からコピペですが、

シェルスクリプトでロックで排他制御して、1個ずつしか処理しないようにする技法ということであれば、 flock コマンドで実装するのが良いかと思います。 flock コマンドで実装する場合の lock, unlock 関数の例を示します。

GIT_LOCK_FILE=/var/run/lock.txt
GIT_LOCK_TIMEOUT=600

# prepare FD for lock.
if ! exec {lockFd}>> $GIT_LOCK_FILE; then
    echo "$datestr fail to open lock file($GIT_LOCK_FILE)." 1>>$LOG 2>&1
    exit 1
fi

lock() {
    if ! flock-w $GIT_LOCK_TIMEOUT $lockFd >/dev/null 2>&1; then
        echo "$datestr fail to aquire lock, another git pull process may be running." 1>>$LOG 2>&1
        return 1
    fi
    return 0
}

unlock() {
    flock -u $lockFd
}

flockコマンドでのロックの実装は、シェルスクリプトで旧来から常套手段とされているロックファイルの存在だけを確かめる方法と比べると、以下のメリットが有ります。

  • タイムアウト処理を実装してくれる(上記のコードで 10 分待ってロックが取れなければ諦めます)
  • ロックを保持しているプロセスが unlock を実行せずに異常終了してもロックが開放される

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

count.shの内容が間違っていただけでした。
ご迷惑をかけて申し訳ございません。

#!/bin/bash/
while [ -f .count.lock ]
do
sleep 1
done
touch .count.lock
declare -i i
i='cat count.txt'
i=$i+1
echo $i
echo $i >| count.txt
rm -f .count.lock

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/11 12:40

    解決しているのでもう良いのかもしれませんが、ファイルの存在確認と touch がアトミックな操作になっていないので、排他制御できていません。
    参考:https://heartbeats.jp/hbblog/2013/10/atomic03.html

    また、このスクリプトは Windows では動作しないと思いますが、何か互換性のあるものがはいっているのでしょうか?

    キャンセル

0

webサーバ apache2 
OS        Windows10

実行環境が追加されたのでやっと判明しました。
タグにlinuxと記載されているのですがwindowsでしたか。タグの修正をしてください。

Windowsではbashは実行できません。
バッチファイルなどで書き直してください。

それともwindows用のbash互換のものをインストールされ、*.shに関連付けされているのでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3288questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。