私は初めてbashスクリプトに触れることから始めます。私は"kiltslog.txt"というテキストファイルに書き込まれたコンテンツをネットワーク上の他のディレクトリにリダイレクトする作業を担当しました。注:次のスクリプトは作成していません。 10分ごとに実行されます...上記のログファイルが次のスクリプトでどのように作成/更新されるのかわかりません。もう1つ... "kiltslog.txt"ファイルは10分ごとに更新され、 "echo StartExec:"で始まるすべての "echo"ステートメントは上記のログファイルに書き込まれます。さらに、スクリプトのどこにも「kiltslog.txt」ファイルへの参照はありません。
#!/bin/bash
start_ts=`date +%s`
out_date=$(date -d @$start_ts --rfc-3339 ns)
echo StartExec: $out_date $start_ts
# min free space, in KB
# equal to 4TB
minSpaceThreshold=4294967296
echo "Checking free space..."
myUsed=$(df -k /nielsen_extracts | tail -1 | awk '{print $3}')
## this can be collapsed into one awk function here:
df -k /nielsen_extracts | tail -1 | /bin/awk '{if (int ($3)>4294967296) print "Enough space: " $3;else print "Not enough space " $3 }'
if [[ $myUsed -gt $minSpaceThreshold ]] ;
then
echo "We have enough free space:" $myUsed
else
echo "We do not have enough free space:" $myUsed
exit
fi
start_ts=`date +%s`
out_date=$(date -d @$start_ts --rfc-3339 ns)
echo DEVStartExec: $out_date $start_ts
# Use a lockfile containing the pid of the running process
# If script crashes and leaves lockfile around, it will have a different pid so
# will not prevent script running again.
#
lf=/tmp/pidLockFileKiltsProd
# create empty lock file if none exists
cat /dev/null >> $lf
read lastPID < $lf
# if lastPID is not null and a process with that pid exists , exit
[ ! -z "$lastPID" -a -d /proc/$lastPID ] && exit
echo not running
# save my pid in the lock file
echo $$ > $lf
nielsen_extracts_root=/nielsen_extracts
app_data_root=/nielsen_extracts/KiltsFilesRequests/AppData
requests_root=/nielsen_extracts/KiltsFilesRequests/AppData/Requests
queue_root=/nielsen_extracts/KiltsFilesRequests/AppData/Requests/queue
processing_root=/nielsen_extracts/KiltsFilesRequests/AppData/Requests/processing
complete_root=/nielsen_extracts/KiltsFilesRequests/AppData/Requests/complete
request_name=
request_id=
request_user=
request_parent_path=
tmp_curl_url=
tmp_curl_param_NewStatus=
##ls $requests_root
# check queue for requests
##echo $(date +Y%m%d)
# tar request in scratch space
#find $requests_root/queue -maxdepth 1 -type d -print
DIRECTORIES=$(find $queue_root -mindepth 1 -type d)
for d in $DIRECTORIES
do
echo "Processing $d directory..."
echo "Moving $d from queue to processing directory..."
#cat $d/requestinfo | awk 'NR==2' | awk BEGIN { FS = ': " };
request_id=$(cat $d/requestinfo | awk 'BEGIN { FS = ":" } ; { print $2 }' | awk 'NR==1' | sed -e 's/^ *//g' -e 's/ *$//g')
request_name=$(cat $d/requestinfo | awk 'BEGIN { FS = ":" } ; { print $2 }' | awk 'NR==2' | sed -e 's/^ *//g' -e 's/ *$//g')
request_user=$(cat $d/requestinfo | awk 'BEGIN {FS = ":" } ; {print $2}' | awk 'NR==3' | sed -e 's/^ *//g' -e 's/ *$//g')
request_parent_path=$(cat $d/requestinfo | awk 'BEGIN {FS = ":" } ; {print $2}' | awk 'NR==4' | sed -e 's/^ *//g' -e 's/ *$//g')
request_id="$(echo $request_id | tr '[a-z'] '[A-Z]')"
echo "request_id: $request_id"
echo "request_name: $request_name"
echo "request_user: $request_user"
echo "request_parent_path: $request_parent_path"
echo "Updating status on front-end to PROCESSING..."
tmp_curl_url="https://kiltsfiles.chicagobooth.edu/Services/UpdateRequestStatus.aspx?RequestID="
tmp_curl_url="$tmp_curl_url$request_id"
tmp_curl_url="$tmp_curl_url&NewStatus=P"
echo "curling $tmp_curl_url ..."
curl $tmp_curl_url | grep updated
#exit
cd $d
pwd
cd ..
pwd
echo "Moving request data to processing..."
mv $request_id/ ../processing
#mv $d $processing_root
# create the subfolder in scratch
echo "Creating subdirectory in scratch /mnt/kiltGlobus/scratch/$request_id"
mkdir -p /mnt/kiltGlobus/scratch/$request_id
#tar the file list
echo "Running tar process with cvz args on request..."
tar cvz -T /nielsen_extracts/KiltsFilesRequests/AppData/Requests/processing/$request_id/filelist -f /mnt/kiltGlobus/scratch/$request_id/$request_name.tgz
#exit
echo "tar complete"
echo "Moving request data to complete..."
cd $processing_root
pwd
mv $request_id/ ../complete
#move to the globus endpoint
mkdir /mnt/kiltGlobus/RMS/$request_user
echo "Moving file to Globus endpoint (RMS)..."
mv /mnt/kiltGlobus/scratch/$request_id/$request_name.tgz /mnt/kiltGlobus/RMS/$request_user
#finish with email notification and front-end update
echo "Updating status on front-end to COMPLETE..."
tmp_curl_url="https://kiltsfiles.chicagobooth.edu/Services/UpdateRequestStatus.aspx?RequestID="
tmp_curl_url="$tmp_curl_url$request_id"
tmp_curl_url="$tmp_curl_url&NewStatus=C"
echo "curling $tmp_curl_url ..."
curl $tmp_curl_url | grep updated
echo "Cleaning up scratch dir..."
rm -rf /mnt/kiltGlobus/scratch/$request_id
done
end_ts=`date +%s`
out_date=$(date -d @$end_ts --rfc-3339 ns)
echo EndExec: $out_date $end_ts
ts_diff=$(($end_ts-$start_ts))
echo ExecTime: $ts_diff
答え1
スクリプトの標準出力はファイルに再ルーティングできます。
thescript >/path/to/kiltslog.txt
したがって、名前(クローン操作など)を変更する必要があります。