terminate linux program when lines repeat endlessly
A finance-crunching program I am dealing with, cruncher.js, has annoying bugs difficult to troubleshoot. One common problem (whose triggering input is difficult to pointpoint and therefore avoid) causes this failure scenario:
Downloading account information...
Downloading today orders...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Once the line "Downloading historical quotes..." repeats for a third time, I know it's hit an infinite loop and never exits, nor skips whatever input case it can't handle gracefully.
How can I pipe this cruncher.js program to |awk, i.e. what inline awk script would detect in its input a 3rd (or 2nd if much easier) consecutive repeated line, and terminate there?
Or maybe instead of awk, using other common Linux/shell tools?
bash awk pipe infinite-loop
add a comment |
A finance-crunching program I am dealing with, cruncher.js, has annoying bugs difficult to troubleshoot. One common problem (whose triggering input is difficult to pointpoint and therefore avoid) causes this failure scenario:
Downloading account information...
Downloading today orders...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Once the line "Downloading historical quotes..." repeats for a third time, I know it's hit an infinite loop and never exits, nor skips whatever input case it can't handle gracefully.
How can I pipe this cruncher.js program to |awk, i.e. what inline awk script would detect in its input a 3rd (or 2nd if much easier) consecutive repeated line, and terminate there?
Or maybe instead of awk, using other common Linux/shell tools?
bash awk pipe infinite-loop
From another perspective, can you limit on time? because then you would have ready built tools liketimeout 100s command
that already exists.
– Rocky Li
Nov 20 '18 at 16:44
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51
add a comment |
A finance-crunching program I am dealing with, cruncher.js, has annoying bugs difficult to troubleshoot. One common problem (whose triggering input is difficult to pointpoint and therefore avoid) causes this failure scenario:
Downloading account information...
Downloading today orders...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Once the line "Downloading historical quotes..." repeats for a third time, I know it's hit an infinite loop and never exits, nor skips whatever input case it can't handle gracefully.
How can I pipe this cruncher.js program to |awk, i.e. what inline awk script would detect in its input a 3rd (or 2nd if much easier) consecutive repeated line, and terminate there?
Or maybe instead of awk, using other common Linux/shell tools?
bash awk pipe infinite-loop
A finance-crunching program I am dealing with, cruncher.js, has annoying bugs difficult to troubleshoot. One common problem (whose triggering input is difficult to pointpoint and therefore avoid) causes this failure scenario:
Downloading account information...
Downloading today orders...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Downloading historical quotes...
Once the line "Downloading historical quotes..." repeats for a third time, I know it's hit an infinite loop and never exits, nor skips whatever input case it can't handle gracefully.
How can I pipe this cruncher.js program to |awk, i.e. what inline awk script would detect in its input a 3rd (or 2nd if much easier) consecutive repeated line, and terminate there?
Or maybe instead of awk, using other common Linux/shell tools?
bash awk pipe infinite-loop
bash awk pipe infinite-loop
asked Nov 20 '18 at 16:37
MarcosMarcos
2,79433057
2,79433057
From another perspective, can you limit on time? because then you would have ready built tools liketimeout 100s command
that already exists.
– Rocky Li
Nov 20 '18 at 16:44
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51
add a comment |
From another perspective, can you limit on time? because then you would have ready built tools liketimeout 100s command
that already exists.
– Rocky Li
Nov 20 '18 at 16:44
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51
From another perspective, can you limit on time? because then you would have ready built tools like
timeout 100s command
that already exists.– Rocky Li
Nov 20 '18 at 16:44
From another perspective, can you limit on time? because then you would have ready built tools like
timeout 100s command
that already exists.– Rocky Li
Nov 20 '18 at 16:44
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51
add a comment |
1 Answer
1
active
oldest
votes
here is one way
$ yes | awk -v key='y' '{if($0==key)c++; else c=0} c==3{exit}1'
y
y
replace the key value with your repeated value; and yes
with your stream generator.
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%2f53397543%2fterminate-linux-program-when-lines-repeat-endlessly%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
here is one way
$ yes | awk -v key='y' '{if($0==key)c++; else c=0} c==3{exit}1'
y
y
replace the key value with your repeated value; and yes
with your stream generator.
add a comment |
here is one way
$ yes | awk -v key='y' '{if($0==key)c++; else c=0} c==3{exit}1'
y
y
replace the key value with your repeated value; and yes
with your stream generator.
add a comment |
here is one way
$ yes | awk -v key='y' '{if($0==key)c++; else c=0} c==3{exit}1'
y
y
replace the key value with your repeated value; and yes
with your stream generator.
here is one way
$ yes | awk -v key='y' '{if($0==key)c++; else c=0} c==3{exit}1'
y
y
replace the key value with your repeated value; and yes
with your stream generator.
answered Nov 20 '18 at 16:47
karakfakarakfa
49k52738
49k52738
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%2f53397543%2fterminate-linux-program-when-lines-repeat-endlessly%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
From another perspective, can you limit on time? because then you would have ready built tools like
timeout 100s command
that already exists.– Rocky Li
Nov 20 '18 at 16:44
Yeah, I already do that, timeout 6m crappyScript.js . Only as a stop-gap measure to prevent a server crisis. It's already at the maximum reasonable before being too much time wasted stuck on this bug, while sometimes legitimate runs need more time than that, though.
– Marcos
Nov 20 '18 at 16:51