###前提・実現したいこと
raspberry pi 3 を利用して下記のようなシステムを構築しようとしております。
1.SDカード挿入時に/etc/udev/rules.dを利用して、2.のスクリプトが実行される
2.スクリプトの中でSDカードの中身を特定のディレクトリにコピー
3.ファイルリネームプログラム(JAVA:自作)呼び出し
###発生している問題・エラーメッセージ
コピーコマンド後の処理が実行されない。
ファイル自体はコピーされていて、直前までのechoも出力されているが、cpコマンド後のechoは出力なし。
###該当のソースコード
bash
1#!/bin/bash 2 3# DEVNAME=/dev/sdc1 4JAVA_DIR=/mnt/data/Systems/Scripts/RecordOrganizer/ 5JAVA_CLASS=ExifRename 6MOUNT_DIRECTORY=/mnt/tmp/ 7TARGET_DIRECTORY=/mnt/data/Share/Temp/targets/ 8OUTPUT_DIRECTORY=/mnt/data/Share/Albam/ 9 10TO1_MAIL=user1@example.com 11TO2_MAIL=user2@example.com 12MSG_BACKUP_S="バックアップを開始しました" 13MSG_BACKUP_N="バックアップ可能なメディアではありませんでした" 14MSG_BACKUP_E="バックアップを完了しました" 15LOGF_PATH=/mnt/data/Share/Temp/targets/sdCopy.log 16RENAME_LOG=/mnt/data/Share/Temp/targets/rename.log 17 18echo `date` 0=$0 1=$1 DEVNAME=$DEVNAME > $LOGF_PATH 19echo dev_check! >> $LOGF_PATH 20 21if [[ "$DEVNAME" =~ sd[c-z][0-9] ]]; then 22 echo $MSG_BACKUP_S | mail -s "data backup" $TO1_MAIL $TO2_MAIL 23else 24 # echo $MSG_BACKUP_N | mail -s "data backup" $TO1_MAIL $TO2_MAIL 25 exit 1 26fi 27 28echo "backup start!!" >> $LOGF_PATH 29 30mount $DEVNAME $MOUNT_DIRECTORY >> $LOGF_PATH 31 32\cp -rf $MOUNT_DIRECTORY $TARGET_DIRECTORY 33 34echo "backup finish!!" >> $LOGF_PATH 35 36cat $LOGF_PATH | mail -s "finish backup" $TO1_MAIL $TO2_MAIL 37 38umount $MOUNT_DIRECTORY >> $LOGF_PATH 39 40cd $JAVA_DIR 41java $JAVA_CLASS $TARGET_DIRECTORY $OUTPUT_DIRECTORY "exiftool" 42 43cat $RENAME_LOG | mail -s "Finish Rename!!" $TO1_MAIL $TO2_MAIL
1.から呼び出された場合のログ(sdCopy.log)
Sat 7 Jan 01:45:02 JST 2017 0=/mnt/data/Systems/Scripts/sdcard_sync.sh 1= DEVNAME=/dev/sdc1 dev_check! backup start!!
->finish backupのメールなし
2.のスクリプトを自分で実行した場合のログ(sdCopy.log)
Sun 8 Jan 01:27:06 JST 2017 0=/mnt/data/Systems/Scripts/sdcard_sync.sh 1= DEVNAME=/dev/sdc1 dev_check! backup start!! backup finish!!
->finish backupのメールあり
###試したこと
2.のスクリプトを自分で実行した場合は、コピー、リネームともに成功するが、
1.の機能から呼び出された場合にコピーコマンドが完了しない。
1.の機能から呼び出されたあと、時間をおいて(10分ぐらい)
2.のスクリプトを呼び出すと下記のような標準出力がある。(もう一度呼び出すと出力なし)
mount: /dev/sdc1 is already mounted or /mnt/tmp busy /dev/sdc1 is already mounted on /mnt/tmp
※これは1.の機能から呼び出されたときにcpで止まっているので、umountされていないため
出てるエラーとして無視していました。
###補足情報(言語/FW/ツール等のバージョンなど)
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
Linux関連初心者の為、至らぬ点など多々あるかと存じますが、
ご指導いただけましたら幸いです。
指摘がありました、cpの前についているバックスラッシュですが、
cpにエイリアスが掛けられていた場合(cp で cd -iなどのなっている場合があるらしい)の対応として、とりあえず入れてみた。な状態です。
外してもつけても挙動に変更がなかったため、つけたままになっておりました。
また、1.から呼び出されたスクリプトが生存しているか確認したいのですが、現在確認方法がわかっておらず、確認できていない状態です。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/07 16:58
2017/01/07 17:23
2017/01/08 03:18
2017/01/10 16:00
2017/01/10 16:51
2017/01/11 15:50