Running script twice at time
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
add a comment |
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
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
add a comment |
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
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
linux bash
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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.
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
answered Nov 22 '18 at 22:20
TanktalusTanktalus
16k43262
16k43262
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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