Running script twice at time












0















I'm making a little simple script to improve the efficienty of my work team.
The script simply searches a file that the user gives as param.



./check_file test_file.xml



I used only ls and cp commands and there's no log or temporary files.



My question is: should I put a .lock file to be sure that the script runs only once at time or can I avoid this control?



Usually I create a lock file, because my scripts write temporary files and if two users run at the same moment the script, it explodes.



Thanks!










share|improve this question























  • If your script has no side effects, don't bother with this kind of check.

    – Antoine
    Nov 23 '18 at 0:33











  • Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

    – Antoine
    Nov 23 '18 at 0:38
















0















I'm making a little simple script to improve the efficienty of my work team.
The script simply searches a file that the user gives as param.



./check_file test_file.xml



I used only ls and cp commands and there's no log or temporary files.



My question is: should I put a .lock file to be sure that the script runs only once at time or can I avoid this control?



Usually I create a lock file, because my scripts write temporary files and if two users run at the same moment the script, it explodes.



Thanks!










share|improve this question























  • If your script has no side effects, don't bother with this kind of check.

    – Antoine
    Nov 23 '18 at 0:33











  • Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

    – Antoine
    Nov 23 '18 at 0:38














0












0








0








I'm making a little simple script to improve the efficienty of my work team.
The script simply searches a file that the user gives as param.



./check_file test_file.xml



I used only ls and cp commands and there's no log or temporary files.



My question is: should I put a .lock file to be sure that the script runs only once at time or can I avoid this control?



Usually I create a lock file, because my scripts write temporary files and if two users run at the same moment the script, it explodes.



Thanks!










share|improve this question














I'm making a little simple script to improve the efficienty of my work team.
The script simply searches a file that the user gives as param.



./check_file test_file.xml



I used only ls and cp commands and there's no log or temporary files.



My question is: should I put a .lock file to be sure that the script runs only once at time or can I avoid this control?



Usually I create a lock file, because my scripts write temporary files and if two users run at the same moment the script, it explodes.



Thanks!







linux bash






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 22 '18 at 22:11









Sebastiano GrassiSebastiano Grassi

31




31













  • If your script has no side effects, don't bother with this kind of check.

    – Antoine
    Nov 23 '18 at 0:33











  • Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

    – Antoine
    Nov 23 '18 at 0:38



















  • If your script has no side effects, don't bother with this kind of check.

    – Antoine
    Nov 23 '18 at 0:33











  • Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

    – Antoine
    Nov 23 '18 at 0:38

















If your script has no side effects, don't bother with this kind of check.

– Antoine
Nov 23 '18 at 0:33





If your script has no side effects, don't bother with this kind of check.

– Antoine
Nov 23 '18 at 0:33













Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

– Antoine
Nov 23 '18 at 0:38





Even if your script does generate temporary files, you can always generate unique filenames so, even then, the lock would just be a matter of not using to much ressources (CPU, or IO).

– Antoine
Nov 23 '18 at 0:38












1 Answer
1






active

oldest

votes


















0














Generally speaking, no. I would recommend avoiding temporary files as much as possible, preferring pipes instead. However, I doubt it's always possible to avoid temporary files, so when I have to, I use $$ in the filename (current process ID or PID). So if you're using /tmp/check_file.tmp as your temporary filename, instead use /tmp/check_file.$$.tmp - then two processes can run at a time, each with their own PID, and not overlap.



Slightly more advanced is to also use ${TMP:-/tmp} as the temporary directory instead of just /tmp - that way users can specify a different directory for each run, and thereby also avoid any overlaps.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53438516%2frunning-script-twice-at-time%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Generally speaking, no. I would recommend avoiding temporary files as much as possible, preferring pipes instead. However, I doubt it's always possible to avoid temporary files, so when I have to, I use $$ in the filename (current process ID or PID). So if you're using /tmp/check_file.tmp as your temporary filename, instead use /tmp/check_file.$$.tmp - then two processes can run at a time, each with their own PID, and not overlap.



    Slightly more advanced is to also use ${TMP:-/tmp} as the temporary directory instead of just /tmp - that way users can specify a different directory for each run, and thereby also avoid any overlaps.






    share|improve this answer




























      0














      Generally speaking, no. I would recommend avoiding temporary files as much as possible, preferring pipes instead. However, I doubt it's always possible to avoid temporary files, so when I have to, I use $$ in the filename (current process ID or PID). So if you're using /tmp/check_file.tmp as your temporary filename, instead use /tmp/check_file.$$.tmp - then two processes can run at a time, each with their own PID, and not overlap.



      Slightly more advanced is to also use ${TMP:-/tmp} as the temporary directory instead of just /tmp - that way users can specify a different directory for each run, and thereby also avoid any overlaps.






      share|improve this answer


























        0












        0








        0







        Generally speaking, no. I would recommend avoiding temporary files as much as possible, preferring pipes instead. However, I doubt it's always possible to avoid temporary files, so when I have to, I use $$ in the filename (current process ID or PID). So if you're using /tmp/check_file.tmp as your temporary filename, instead use /tmp/check_file.$$.tmp - then two processes can run at a time, each with their own PID, and not overlap.



        Slightly more advanced is to also use ${TMP:-/tmp} as the temporary directory instead of just /tmp - that way users can specify a different directory for each run, and thereby also avoid any overlaps.






        share|improve this answer













        Generally speaking, no. I would recommend avoiding temporary files as much as possible, preferring pipes instead. However, I doubt it's always possible to avoid temporary files, so when I have to, I use $$ in the filename (current process ID or PID). So if you're using /tmp/check_file.tmp as your temporary filename, instead use /tmp/check_file.$$.tmp - then two processes can run at a time, each with their own PID, and not overlap.



        Slightly more advanced is to also use ${TMP:-/tmp} as the temporary directory instead of just /tmp - that way users can specify a different directory for each run, and thereby also avoid any overlaps.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 22 '18 at 22:20









        TanktalusTanktalus

        16k43262




        16k43262






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53438516%2frunning-script-twice-at-time%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Wiesbaden

            Marschland

            Dieringhausen