सवाल पृष्ठभूमि रनिंग कमांड से फ़ाइलों के नाम पर वर्तमान टाइमस्टैंप संलग्न करें


निम्नलिखित आदेश है जिसे मैंने बैश स्क्रिप्ट में उपयोग किया है और यह पृष्ठभूमि पर चलाया जाता है:

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-08 टी 22-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