سؤال إلحاق الطابع الزمني الحالي على أسماء الملفات من الخلفية تشغيل الخلفية


فيما يلي الأمر الذي استخدمته في البرنامج النصي bash ويتم تشغيله في الخلفية:

sshpass -p prakash12 ssh -t -p $1 prakash@localhost './test_new_update_script.sh > /home/log/unit_update_output.log 2> /home/log/unit_update_error.log < /dev/null | echo $! > /home/log/unit_update_pids &'

أنشأ هذا الأمر 3 ملفات في وقت التشغيل ، على سبيل المثال unit_update_output.log، unit_update_error.log و unit_update_pids. وطباعة المعلومات ذات الصلة. في تلك الملفات.

اريد ان احيل current timestamp في نهاية كل 3 ملفات اسم.

مثل: unit_update_output-2014-04-08T22-15-02.log   "2014-04-08T22-15-02" هذا هو الطابع الزمني الحالي.

يعمل الأمر أعلاه في الخلفية:

إذن كيف يمكنني القيام بذلك؟


4
2018-04-08 16:48


الأصل




الأجوبة:


ما إذا كان أمر الخلفية أم لا هو غير ذي صلة ، كل ما عليك القيام به هو إضافة إخراج أ date استدعاء أسماء الملفات التي تقوم بإنشائها. باستخدام نفس الصيغة بالضبط كما في سؤالك ، يمكنك القيام بما يلي:

sshpass -p prakash12 ssh -t -p $1 prakash@localhost \
    './test_new_update_script.sh > /home/log/unit_update_output.$(date '+%F-%T').log \
     2> /home/log/unit_update_error.$(date '+%F-%T').log < /dev/null | 
     echo $! > /home/log/unit_update_pids$(date '+%F-%T') &'

الحيلة تضيف $(date '+%F-%T').، هذا سيعود (على سبيل المثال):

$ date '+%F-%T'
2014-04-08-18:54:52

لذلك ، سوف ينشئ الأمر أعلاه:

/home/log/unit_update_output.2014-04-08-18:57:02.log 
/home/log/unit_update_error.2014-04-08-18:57:02.log 
/home/log/unit_update_pids2014-04-08-18:57:02

نرى man date للتنسيقات المختلفة التي يمكنك الحصول عليها.


4
2018-04-08 16:57



انها تعمل الكمال. - Prakash V Holkar