<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="cli-doc 0.1.1" />
<link rel="icon" type="image/x-icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAABeCAYAAAC5BeOaAAAACXBIWXMAAA3nAAAN5wGZFKomAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAABN9JREFUeNrtnG9oVXUYxz/PvHObZrWWGsuwWkWT2uhVf/bCQlKMsj9vo39kFjoKIhAMkuiNBb7JysV60SRchCj4ohiVmo0MKVqQXg2WM2VabMNkc5tz9+nF+cVy7Xbv7j33/LvPF35wOefcc3773N/v+3ue55wzUVVM/qvCEBhYA2sysAbWwJoMrIGNoVKlvoCI3AvMB0ZU9VC5gJVSZ14ikgZuB46paqNZgSmaViAiVwK3OBsAWCAijwGDwElV/d2sIH+YC4F1wOPAXTlmxDngMPAlsFtVf0sUWVUtujmArwIjgBbQMsBOP/oSlZbyYZRWAB8DTxVzGuCEWcHlYFuBbUX2IwM0qGqfRQVTo3Vjlt0TwBfOSwEGgDZgP/DHtGO7kgS1aI918elMnjkELHPHpN229LTvNgDrge+AR5Pkr3547KIs2w+o6tEcP2gv8IFrliBM01CW7c0iUmNFmMLVB4zNsP1mYJ+I3GlgC/PnYWBPlt33AD3OSw1sAdrk0tRs5690n28QkY0iUmfVrfzDrvuA3cDiPA4fBTqBbarak1iyfoUXQD2wd5ap7C5gadJCLVX1vx7rRu9m4EGXqubSsItj95kV5Ae4EdgArAWqchw+BqxU1W8NbP6A/7mDkMmxWB4F7tCEPEwW5B2EX4HlwJEs+5cBTRZuFbZQHnTxbTrLIY0G1pvmtSJSW0BS0ZVld8rATk3f0yLykYisEJE5efwYVcCKLLtPJQWsHyNkHvC8awMi0o1XCjwCnPzXNWpEZB3QCsxUQzgPfG9RgTf6WoBun/ryhqq+ZVbgr74B3klSglCsFYznEZ/mUgfQqqrjs5gpS/KsSxSii8BxVb0Yaq0AWAq87ixhIs8awRCwE7h7lte6Hviawm6xz6YNAs9Eplbg7hrcileDXQTUAq8BdcBZ4GWXKPyiqpOzPHcK+AFoDirsBh5W1c9DrW79zyib8WZiAedZGcBInd66Cu1vnB6KuzGEa94U96ggHx2L0zWDSCG3Oo8dLPI83S4sWx4Q1AlgS2hRQZANuBrYgVe/LaW3poFVkbqDEEi66NUbFpdoxp1T1aFQU1pTMhYvA2sysAbWwJoMrIE1sCbfawXyItcitKDMDf2vUkap5qC+y/nQskNfHuN8iUdQOpl6vTMKGkBYo20ciiVYeZr51HAar0ASNfVSz226mUz8PLaa5ohCBWignyXxXLzm0I9Xaouixhgtug4cDljdTh9ejTSK2qo7GInv4vUmKfpZj7IKiUBUABdQ9tBOh2o4s8nqsZYgGFiTgTWwBtbkyZcijGzgOi7xPrAaiMLr9MMIu5jLK2EVYooesSIIl9gLPBERqABXoDzLOB1hdaD4IswLNFHBzxGdkUolC/W94NNaPzy2MsJWJ4yH84pT8WD/ogc4HlGw+7X9P/8xKR5g9TMmUdagHI6UBcBXwJOx9djLTtZKHRmuChXpBMo4f4ZV1SoJWJMlCAbWwJoMbGxqBQCylmtI0YJSXYLgKYPQox/SGxewfj2w8RDKp8CCEvY1g/C2trGpLMC6BzZO4b3eGYR5PaDbOZB8j51HU2BQvXF7f3ksXpOcDbjPZ8oCrLZzAvgkoP72UkVn+UQF9TzHGX5CWY2UxBYuoPxIhi1hPppptQJLEAysycAaWANrMrAGNun6G7tgGklbFFTHAAAAAElFTkSuQmCC">
<title>hq: CLI doc</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: #fafafa;
color: #333;
line-height: 1.5;
}
.container {
max-width: 1200px;
margin: 0 auto;
min-height: 100vh;
padding: 20px;
}
.header {
background: white;
border: 1px solid #e1e1e1;
border-radius: 6px;
padding: 16px;
margin-bottom: 10px;
}
.search-container {;
display: flex;
gap: 8px;
align-items: center;
position: relative;
}
.search-input {
flex: 1;
padding: 8px 12px;
border: 1px solid #d1d1d1;
border-radius: 4px;
font-size: 14px;
}
.search-input:focus {
outline: none;
border-color: #007acc;
}
.btn {
padding: 8px 16px;
border: 1px solid #d1d1d1;
border-radius: 4px;
background: white;
font-size: 14px;
cursor: pointer;
}
.btn:hover {
background: #f5f5f5;
}
.btn-primary {
background: #007acc;
color: white;
border-color: #007acc;
}
.btn-primary:hover {
background: #005a9e;
}
.main-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
height: calc(100vh - 146px);
}
.column {
background: white;
border: 1px solid #e1e1e1;
border-radius: 6px;
overflow: hidden;
}
.column-header {
padding: 12px 16px;
background: #f8f8f8;
border-bottom: 1px solid #e1e1e1;
font-weight: 600;
font-size: 14px;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #666;
}
.column-content {
padding: 16px;
height: calc(100% - 65px);
overflow-y: auto;
}
.info-section {
margin-bottom: 16px;
padding: 12px;
border: 1px solid #e8e8e8;
border-radius: 4px;
background: #fafafa;
}
.info-header {
font-weight: 600;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #666;
margin-bottom: 8px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
}
.info-content {
font-size: 13px;
line-height: 1.4;
color: #555;
}
.info-brief {
font-style: italic;
color: #777;
}
.command-text {
flex: 1;
}
.command-signature {
font-family: 'Monaco', 'Courier New', monospace;
background: white;
padding: 8px;
border-radius: 3px;
border: 1px solid #e1e1e1;
margin: 8px 0;
font-size: 13px;
}
.argument-item {
margin: 6px 0;
padding: 8px;
background: white;
border: 1px solid #f0f0f0;
border-radius: 3px;
cursor: pointer;
}
.argument-item:hover {
border-color: #d1d1d1;
background: #f9f9f9;
}
.argument-name {
font-family: 'Monaco', 'Courier New', monospace;
font-weight: 600;
color: #d73a49;
font-size: 13px;
}
.argument-description {
color: #666;
font-size: 12px;
margin-top: 2px;
}
.option-header {
display: flex;
color: #aaa;
justify-content: space-between;
align-items: flex-start;
}
.option-main {
flex: 1;
}
.non-expanding-text {
padding-left: 1.5em;
}
.expand-triangle {
width: 16px;
height: 16px;
margin-right: 3px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 12px;
transition: transform 0.2s ease;
flex-shrink: 0;
}
.expand-triangle:hover {
color: #333;
}
.expand-triangle.expanded {
transform: rotate(90deg);
}
.tree-item {
padding: 8px 12px;
margin: 2px 0;
cursor: pointer;
border-radius: 4px;
font-family: 'Monaco', 'Courier New', monospace;
font-size: 14px;
position: relative;
border: 1px solid transparent;
transition: all 0.15s ease;
display: flex;
align-items: center;
user-select: none;
}
.tree-item:hover {
background: #f0f0f0;
border-color: #d1d1d1;
}
.tree-item.selected {
background: #007acc;
color: white !important;
}
.tree-item.level-0 {
font-weight: 600;
margin-bottom: 4px;
}
.tree-item.level-1 {
margin-left: 16px;
color: #666;
}
.tree-item.level-2 {
margin-left: 32px;
color: #888;
font-size: 13px;
}
.tree-children {
display: none;
}
.tree-children.expanded {
display: block;
}
.hidden {
display: none;
}
.option-item {
padding: 12px;
margin: 4px 0;
/*border: 1px solid #f0f0f0;*/
/*border-radius: 4px;*/
}
.option-item:nth-child(even) {
background-color: #f2f2f2;
}
.option-item-expandable {
cursor: pointer;
transition: all 0.15s ease;
/*border: 1px solid #f0f0f0;*/
/*border-radius: 4px;*/
}
.option-item:hover {
border-color: #d1d1d1;
background: #e5e5e5;
}
.option-name {
font-family: 'Monaco', 'Courier New', monospace;
font-weight: 600;
font-size: 14px;
color: #007acc;
}
.option-description {
color: #666;
font-size: 13px;
margin-top: 4px;
}
.option-full-doc {
margin-top: 8px;
/*border-radius: 4px;*/
font-size: 13px;
display: none;
}
.option-full-doc.expanded {
display: block;
}
.option-short {
color: #ac7acc;
}
.no-selection {
text-align: center;
color: #999;
font-style: italic;
margin-top: 40px;
}
.usage-option {
color: #ac7acc;
}
.usage-argument {
color: #d73a49;;
}
.rich-text ul {
margin: 0;
padding: 0 0 0 1em;
}
.rt-config {
font-weight: bold;
}
.rt-config-value {
font-style: italic;
}
.version {
color: #999;
font-family: 'Monaco', 'Courier New', monospace;
text-align: right;
font-size: 16px;
}
.search-results-widget {
position: absolute;
top: 100%;
right: 0;
background: white;
border: 1px solid #d1d1d1;
border-radius: 4px;
padding: 8px 12px;
margin-top: 4px;
display: none;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
z-index: 1000;
}
.search-results-widget.visible {
display: flex;
align-items: center;
gap: 8px;
}
.search-counter {
font-size: 12px;
color: #666;
font-weight: 500;
min-width: 30px;
}
.search-nav-buttons {
display: flex;
gap: 2px;
}
.search-nav-btn {
padding: 4px 6px;
border: 1px solid #d1d1d1;
border-radius: 3px;
background: white;
font-size: 12px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
}
.search-nav-btn:hover:not(:disabled) {
background: #f5f5f5;
}
.search-nav-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.search-highlight-command {
background-color: #ffccaa !important;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="search-container">
<input type="text" class="search-input" placeholder="Search commands..." id="searchInput" oninput="resetSearch()">
<button class="btn btn-primary" onclick="performSearch()">Search</button>
<div class="search-results-widget" id="searchWidget">
<div class="search-counter" id="searchCounter">1/4</div>
<div class="search-nav-buttons">
<button class="search-nav-btn" id="searchPrev" onclick="navigateSearch(-1)" title="Previous result">↑</button>
<button class="search-nav-btn" id="searchNext" onclick="navigateSearch(1)" title="Next result">↓</button>
<button class="search-nav-btn" onclick="resetSearch()" title="Clear search">×</button>
</div>
</div>
</div>
</div>
<div class="version">
hyperqueue 0.22.0-dev
</div>
<div class="main-content">
<div class="column">
<div class="column-header">Commands</div>
<div class="column-content" id="commandTree">
<div id="node-c0" class="tree-item level-0 selected expanded" onclick="selectCommand('c0', this)" data-command="0"><div id="triangle-c0" class="expand-triangle expanded" onclick='toggleEvent(event, "c0")'>▶</div>
<div class="command-text">hq</div></div>
<div class="tree-item-children ">
<div id="node-c1" class="tree-item level-1 " onclick="selectCommand('c1', this)" data-command="1"><div id="triangle-c1" class="expand-triangle " onclick='toggleEvent(event, "c1")'>▶</div>
<div class="command-text">server</div></div>
<div class="tree-item-children hidden">
<div id="node-c2" class="tree-item level-2 " onclick="selectCommand('c2', this)" data-command="2"><div class="command-text non-expanding-text">start</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c3" class="tree-item level-2 " onclick="selectCommand('c3', this)" data-command="3"><div class="command-text non-expanding-text">stop</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c4" class="tree-item level-2 " onclick="selectCommand('c4', this)" data-command="4"><div class="command-text non-expanding-text">info</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c5" class="tree-item level-2 " onclick="selectCommand('c5', this)" data-command="5"><div class="command-text non-expanding-text">generate-access</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c6" class="tree-item level-1 " onclick="selectCommand('c6', this)" data-command="6"><div id="triangle-c6" class="expand-triangle " onclick='toggleEvent(event, "c6")'>▶</div>
<div class="command-text">job</div></div>
<div class="tree-item-children hidden">
<div id="node-c7" class="tree-item level-2 " onclick="selectCommand('c7', this)" data-command="7"><div class="command-text non-expanding-text">list</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c8" class="tree-item level-2 " onclick="selectCommand('c8', this)" data-command="8"><div class="command-text non-expanding-text">summary</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c9" class="tree-item level-2 " onclick="selectCommand('c9', this)" data-command="9"><div class="command-text non-expanding-text">info</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c10" class="tree-item level-2 " onclick="selectCommand('c10', this)" data-command="10"><div class="command-text non-expanding-text">cancel</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c11" class="tree-item level-2 " onclick="selectCommand('c11', this)" data-command="11"><div class="command-text non-expanding-text">forget</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c12" class="tree-item level-2 " onclick="selectCommand('c12', this)" data-command="12"><div class="command-text non-expanding-text">cat</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c13" class="tree-item level-2 " onclick="selectCommand('c13', this)" data-command="13"><div class="command-text non-expanding-text">submit</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c14" class="tree-item level-2 " onclick="selectCommand('c14', this)" data-command="14"><div class="command-text non-expanding-text">submit-file</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c15" class="tree-item level-2 " onclick="selectCommand('c15', this)" data-command="15"><div class="command-text non-expanding-text">wait</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c16" class="tree-item level-2 " onclick="selectCommand('c16', this)" data-command="16"><div class="command-text non-expanding-text">progress</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c17" class="tree-item level-2 " onclick="selectCommand('c17', this)" data-command="17"><div class="command-text non-expanding-text">task-ids</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c18" class="tree-item level-2 " onclick="selectCommand('c18', this)" data-command="18"><div class="command-text non-expanding-text">open</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c19" class="tree-item level-2 " onclick="selectCommand('c19', this)" data-command="19"><div class="command-text non-expanding-text">close</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c20" class="tree-item level-1 " onclick="selectCommand('c20', this)" data-command="20"><div id="triangle-c20" class="expand-triangle " onclick='toggleEvent(event, "c20")'>▶</div>
<div class="command-text">task</div></div>
<div class="tree-item-children hidden">
<div id="node-c21" class="tree-item level-2 " onclick="selectCommand('c21', this)" data-command="21"><div class="command-text non-expanding-text">list</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c22" class="tree-item level-2 " onclick="selectCommand('c22', this)" data-command="22"><div class="command-text non-expanding-text">info</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c23" class="tree-item level-2 " onclick="selectCommand('c23', this)" data-command="23"><div class="command-text non-expanding-text">explain</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c24" class="tree-item level-1 " onclick="selectCommand('c24', this)" data-command="24"><div class="command-text non-expanding-text">submit</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c25" class="tree-item level-1 " onclick="selectCommand('c25', this)" data-command="25"><div id="triangle-c25" class="expand-triangle " onclick='toggleEvent(event, "c25")'>▶</div>
<div class="command-text">worker</div></div>
<div class="tree-item-children hidden">
<div id="node-c26" class="tree-item level-2 " onclick="selectCommand('c26', this)" data-command="26"><div class="command-text non-expanding-text">start</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c27" class="tree-item level-2 " onclick="selectCommand('c27', this)" data-command="27"><div class="command-text non-expanding-text">stop</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c28" class="tree-item level-2 " onclick="selectCommand('c28', this)" data-command="28"><div class="command-text non-expanding-text">list</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c29" class="tree-item level-2 " onclick="selectCommand('c29', this)" data-command="29"><div class="command-text non-expanding-text">hwdetect</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c30" class="tree-item level-2 " onclick="selectCommand('c30', this)" data-command="30"><div class="command-text non-expanding-text">info</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c31" class="tree-item level-2 " onclick="selectCommand('c31', this)" data-command="31"><div class="command-text non-expanding-text">address</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c32" class="tree-item level-2 " onclick="selectCommand('c32', this)" data-command="32"><div class="command-text non-expanding-text">wait</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c33" class="tree-item level-2 " onclick="selectCommand('c33', this)" data-command="33"><div class="command-text non-expanding-text">deploy-ssh</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c34" class="tree-item level-1 " onclick="selectCommand('c34', this)" data-command="34"><div id="triangle-c34" class="expand-triangle " onclick='toggleEvent(event, "c34")'>▶</div>
<div class="command-text">output-log</div></div>
<div class="tree-item-children hidden">
<div id="node-c35" class="tree-item level-2 " onclick="selectCommand('c35', this)" data-command="35"><div class="command-text non-expanding-text">summary</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c36" class="tree-item level-2 " onclick="selectCommand('c36', this)" data-command="36"><div class="command-text non-expanding-text">jobs</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c37" class="tree-item level-2 " onclick="selectCommand('c37', this)" data-command="37"><div class="command-text non-expanding-text">show</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c38" class="tree-item level-2 " onclick="selectCommand('c38', this)" data-command="38"><div class="command-text non-expanding-text">cat</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c39" class="tree-item level-2 " onclick="selectCommand('c39', this)" data-command="39"><div class="command-text non-expanding-text">export</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c40" class="tree-item level-1 " onclick="selectCommand('c40', this)" data-command="40"><div id="triangle-c40" class="expand-triangle " onclick='toggleEvent(event, "c40")'>▶</div>
<div class="command-text">alloc</div></div>
<div class="tree-item-children hidden">
<div id="node-c41" class="tree-item level-2 " onclick="selectCommand('c41', this)" data-command="41"><div class="command-text non-expanding-text">list</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c42" class="tree-item level-2 " onclick="selectCommand('c42', this)" data-command="42"><div class="command-text non-expanding-text">info</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c43" class="tree-item level-2 " onclick="selectCommand('c43', this)" data-command="43"><div id="triangle-c43" class="expand-triangle " onclick='toggleEvent(event, "c43")'>▶</div>
<div class="command-text">add</div></div>
<div class="tree-item-children hidden">
<div id="node-c44" class="tree-item level-2 " onclick="selectCommand('c44', this)" data-command="44"><div class="command-text non-expanding-text">pbs</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c45" class="tree-item level-2 " onclick="selectCommand('c45', this)" data-command="45"><div class="command-text non-expanding-text">slurm</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c46" class="tree-item level-2 " onclick="selectCommand('c46', this)" data-command="46"><div class="command-text non-expanding-text">pause</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c47" class="tree-item level-2 " onclick="selectCommand('c47', this)" data-command="47"><div class="command-text non-expanding-text">resume</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c48" class="tree-item level-2 " onclick="selectCommand('c48', this)" data-command="48"><div id="triangle-c48" class="expand-triangle " onclick='toggleEvent(event, "c48")'>▶</div>
<div class="command-text">dry-run</div></div>
<div class="tree-item-children hidden">
<div id="node-c49" class="tree-item level-2 " onclick="selectCommand('c49', this)" data-command="49"><div class="command-text non-expanding-text">pbs</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c50" class="tree-item level-2 " onclick="selectCommand('c50', this)" data-command="50"><div class="command-text non-expanding-text">slurm</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c51" class="tree-item level-2 " onclick="selectCommand('c51', this)" data-command="51"><div class="command-text non-expanding-text">remove</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c52" class="tree-item level-1 " onclick="selectCommand('c52', this)" data-command="52"><div id="triangle-c52" class="expand-triangle " onclick='toggleEvent(event, "c52")'>▶</div>
<div class="command-text">journal</div></div>
<div class="tree-item-children hidden">
<div id="node-c53" class="tree-item level-2 " onclick="selectCommand('c53', this)" data-command="53"><div class="command-text non-expanding-text">export</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c54" class="tree-item level-2 " onclick="selectCommand('c54', this)" data-command="54"><div class="command-text non-expanding-text">stream</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c55" class="tree-item level-2 " onclick="selectCommand('c55', this)" data-command="55"><div class="command-text non-expanding-text">replay</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c56" class="tree-item level-2 " onclick="selectCommand('c56', this)" data-command="56"><div class="command-text non-expanding-text">prune</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c57" class="tree-item level-2 " onclick="selectCommand('c57', this)" data-command="57"><div class="command-text non-expanding-text">flush</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c58" class="tree-item level-1 " onclick="selectCommand('c58', this)" data-command="58"><div id="triangle-c58" class="expand-triangle " onclick='toggleEvent(event, "c58")'>▶</div>
<div class="command-text">data</div></div>
<div class="tree-item-children hidden">
<div id="node-c59" class="tree-item level-2 " onclick="selectCommand('c59', this)" data-command="59"><div class="command-text non-expanding-text">put</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c60" class="tree-item level-2 " onclick="selectCommand('c60', this)" data-command="60"><div class="command-text non-expanding-text">get</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c61" class="tree-item level-1 " onclick="selectCommand('c61', this)" data-command="61"><div id="triangle-c61" class="expand-triangle " onclick='toggleEvent(event, "c61")'>▶</div>
<div class="command-text">dashboard</div></div>
<div class="tree-item-children hidden">
<div id="node-c62" class="tree-item level-2 " onclick="selectCommand('c62', this)" data-command="62"><div class="command-text non-expanding-text">stream</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c63" class="tree-item level-2 " onclick="selectCommand('c63', this)" data-command="63"><div class="command-text non-expanding-text">replay</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c64" class="tree-item level-1 " onclick="selectCommand('c64', this)" data-command="64"><div id="triangle-c64" class="expand-triangle " onclick='toggleEvent(event, "c64")'>▶</div>
<div class="command-text">doc</div></div>
<div class="tree-item-children hidden">
<div id="node-c65" class="tree-item level-2 " onclick="selectCommand('c65', this)" data-command="65"><div class="command-text non-expanding-text">job</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c66" class="tree-item level-2 " onclick="selectCommand('c66', this)" data-command="66"><div class="command-text non-expanding-text">taskarray</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c67" class="tree-item level-2 " onclick="selectCommand('c67', this)" data-command="67"><div class="command-text non-expanding-text">resources</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c68" class="tree-item level-2 " onclick="selectCommand('c68', this)" data-command="68"><div class="command-text non-expanding-text">worker</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c69" class="tree-item level-2 " onclick="selectCommand('c69', this)" data-command="69"><div class="command-text non-expanding-text">autoalloc</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c70" class="tree-item level-2 " onclick="selectCommand('c70', this)" data-command="70"><div class="command-text non-expanding-text">python-api</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c71" class="tree-item level-2 " onclick="selectCommand('c71', this)" data-command="71"><div class="command-text non-expanding-text">cheatsheet</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c72" class="tree-item level-2 " onclick="selectCommand('c72', this)" data-command="72"><div class="command-text non-expanding-text">changelog</div></div>
<div class="tree-item-children hidden">
</div>
<div id="node-c73" class="tree-item level-2 " onclick="selectCommand('c73', this)" data-command="73"><div class="command-text non-expanding-text">faq</div></div>
<div class="tree-item-children hidden">
</div>
</div>
<div id="node-c74" class="tree-item level-1 " onclick="selectCommand('c74', this)" data-command="74"><div class="command-text non-expanding-text">generate-completion</div></div>
<div class="tree-item-children hidden">
</div>
</div>
</div>
</div>
<div class="column">
<div class="column-header">Options</div>
<div class="column-content" id="optionsPanel">
<div class="info-section">
<div class="info-header">
Command Info
</div>
<div class="info-content" id="commandInfo">
<div class="info-brief">Git is a distributed version control system</div>
<div class="command-signature">git [--version] [--help] [command]</div>
<div style="margin-top: 8px;">
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
</div>
</div>
</div>
<div id="argumentsInfo"></div>
<div id="categoryList"></div>
</div>
</div>
</div>
</div>
<script>
const commandData = {"c30":{"name":"info","parent":"c25","brief":"<div class=\"rich-text\"><p>Display information about a worker</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">info</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><WORKER_ID></span>"],"arguments":[{"name":"<WORKER_ID>","brief":"<div class=\"rich-text\"><p>Worker ID</p></div>","description":null}],"categories":[]},"c12":{"name":"cat","parent":"c6","brief":"<div class=\"rich-text\"><p>Shows task(s) stdout and stderr</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">cat</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB_SELECTOR></span> <span class=\"usage-argument\"><STREAM></span>"],"arguments":[{"name":"<JOB_SELECTOR>","brief":"<div class=\"rich-text\"><p>Select a job</p></div>","description":null},{"name":"<STREAM>","brief":"<div class=\"rich-text\"><p>Type of output stream to display</p></div>","description":"<div class=\"rich-text\"><p>Possible values:</p><ul><li>stdout: Displays stdout output stream for given job and task(s)</li><li>stderr: Displays stderr output stream for given job and task(s)</li></ul></div>"}],"categories":[{"title":"Options","options":[{"id":"o12-1","short":null,"long":"--tasks <TASKS>","brief":"<div class=\"rich-text\"><p>Filter task(s) by ID</p></div>","description":null},{"id":"o12-2","short":null,"long":"--task-status <TASK_STATUS>","brief":"<div class=\"rich-text\"><p>Filter task(s) by status. You can use multiple states separated by a comma</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">waiting, running, finished, failed, canceled, opened</span>]</p></div>"},{"id":"o12-3","short":null,"long":"--print-task-header","brief":"<div class=\"rich-text\"><p>Add task headers to the output</p></div>","description":"<div class=\"rich-text\"><p>Prepends the output of each task with a header line that identifies the task which produced that output.</p></div>"}]}]},"c57":{"name":"flush","parent":"c52","brief":"<div class=\"rich-text\"><p>Forces to flush its journal of a running server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-command\">flush</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c31":{"name":"address","parent":"c25","brief":"<div class=\"rich-text\"><p>Display worker's hostname</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">address</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><WORKER_ID></span>"],"arguments":[{"name":"<WORKER_ID>","brief":"<div class=\"rich-text\"><p>Worker ID</p></div>","description":null}],"categories":[]},"c15":{"name":"wait","parent":"c6","brief":"<div class=\"rich-text\"><p>Waits until a job is finished</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">wait</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Jobs to wait for</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o15-1","short":null,"long":"--without-close","brief":"<div class=\"rich-text\"><p>Waits until all tasks are completed, even if the job is still open</p></div>","description":null}]}]},"c69":{"name":"autoalloc","parent":"c64","brief":"<div class=\"rich-text\"><p>Automatic allocator subsystem</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">autoalloc</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c73":{"name":"faq","parent":"c64","brief":"<div class=\"rich-text\"><p>Frequently asked questions about HyperQueue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">faq</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c23":{"name":"explain","parent":"c20","brief":"<div class=\"rich-text\"><p>Explain if task can run on a selected worker</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">task</span> <span class=\"usage-command\">explain</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB_SELECTOR></span> <span class=\"usage-argument\"><TASK_ID></span>"],"arguments":[{"name":"<JOB_SELECTOR>","brief":"<div class=\"rich-text\"><p>Select specific job</p></div>","description":null},{"name":"<TASK_ID>","brief":"<div class=\"rich-text\"><p>Select specific task(s)</p></div>","description":null}],"categories":[]},"c63":{"name":"replay","parent":"c61","brief":"<div class=\"rich-text\"><p>Replay events from a journal file</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">dashboard</span> <span class=\"usage-command\">replay</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOURNAL></span>"],"arguments":[{"name":"<JOURNAL>","brief":"<div class=\"rich-text\"><p>Path to a journal file</p></div>","description":"<div class=\"rich-text\"><p>New journal file can be created by `hq server start --journal=<path>`.</p></div>"}],"categories":[]},"c60":{"name":"get","parent":"c58","brief":"<div class=\"rich-text\"><p>Inside a task, get an input data object into the local datanode</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">data</span> <span class=\"usage-command\">get</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><INPUT_ID></span> <span class=\"usage-argument\"><PATH></span>"],"arguments":[{"name":"<INPUT_ID>","brief":"<div class=\"rich-text\"><p>Input ID</p></div>","description":null},{"name":"<PATH>","brief":"<div class=\"rich-text\"><p>Path of file/directory that should be downloaded</p></div>","description":null}],"categories":[]},"c18":{"name":"open","parent":"c6","brief":"<div class=\"rich-text\"><p>Open a new job (without attaching any tasks yet)</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">open</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o18-1","short":null,"long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>The name of the job</p></div>","description":null},{"id":"o18-2","short":null,"long":"--max-fails <MAX_FAILS>","brief":"<div class=\"rich-text\"><p>Maximum number tasks that may fail in the job</p></div>","description":"<div class=\"rich-text\"><p>If this limit is reached, the all other tasks are cancelled.</p></div>"}]}]},"c55":{"name":"replay","parent":"c52","brief":"<div class=\"rich-text\"><p>Replays old events, then terminate</p></div>","description":"<div class=\"rich-text\"><p>Events are exported as NDJSON on `stdout`.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-command\">replay</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c49":{"name":"pbs","parent":"c48","brief":"<div class=\"rich-text\"><p>Try to create a PBS allocation</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">dry-run</span> <span class=\"usage-command\">pbs</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-command\">--time-limit</span> <span class=\"usage-argument\"><TIME_LIMIT></span> <span class=\"usage-option\">[ADDITIONAL_ARGS]...</span>"],"arguments":[{"name":"[ADDITIONAL_ARGS]...","brief":"<div class=\"rich-text\"><p>Additional arguments passed to the submit command</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o49-1","short":"-b","long":"--backlog <BACKLOG>","brief":"<div class=\"rich-text\"><p>The maximal number of jobs that can be waiting in the queue</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o49-2","short":"-t","long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit (walltime) of PBS/Slurm allocations</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o49-3","short":"-w","long":"--workers-per-alloc <WORKERS_PER_ALLOC>","brief":"<div class=\"rich-text\"><p>The number of workers (nodes) in each allocation</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o49-4","short":null,"long":"--max-worker-count <MAX_WORKER_COUNT>","brief":"<div class=\"rich-text\"><p>Maximum number of concurrent workers in any state</p></div>","description":"<div class=\"rich-text\"><p>It counts workers that can be queued or running.</p></div>"},{"id":"o49-5","short":"-n","long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>Name of the allocation queue (for debug purposes only)</p></div>","description":null},{"id":"o49-6","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The cores assigned to the worker</p></div>","description":null},{"id":"o49-7","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>Resources provided by the worker</p></div>","description":"<div class=\"rich-text\"><p>Examples:</p><ul><li>`--resource gpus=[0,1,2,3]`</li><li>`--resource "memory=sum(1024)"`</li></ul></div>"},{"id":"o49-8","short":null,"long":"--group <GROUP>","brief":"<div class=\"rich-text\"><p>Sets worker's group</p></div>","description":"<div class=\"rich-text\"><p>Workers from the same group are used for multi-node tasks.</p><p>By default, the worker tries to detect allocation name from SLURM/PBS, if running outside a manager, then the group is empty.</p></div>"},{"id":"o49-9","short":null,"long":"--no-detect-resources","brief":"<div class=\"rich-text\"><p>Disables auto-detection of resources</p></div>","description":null},{"id":"o49-10","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Ignores hyper-threading while detecting CPU cores</p></div>","description":null},{"id":"o49-11","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o49-12","short":null,"long":"--overview-interval <OVERVIEW_INTERVAL>","brief":"<div class=\"rich-text\"><p>The period of reporting the overview to the server</p></div>","description":"<div class=\"rich-text\"><p>The overview contains information about HW usage. It serves only for the user's informing the user (e.g., in dashboard), the server scheduler is independent on worker's overviews.</p><p>Set to "0s" to disable overview updates. By default, overview updates are disabled to reduce network bandwidth and event journal size.</p></div>"},{"id":"o49-13","short":null,"long":"--on-server-lost <ON_SERVER_LOST>","brief":"<div class=\"rich-text\"><p>The policy when a connection to a server is lost</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">finish-running</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stop, finish-running</span>]</p></div>"},{"id":"o49-14","short":null,"long":"--no-dry-run","brief":"<div class=\"rich-text\"><p>Disables veryfing the parameter correctness via dry-run</p></div>","description":"<div class=\"rich-text\"><p>If dry run is enabled, the server tries to submit a probing allocation to verify whether the parameters are correct. The allocation is immediately canceled.</p></div>"},{"id":"o49-15","short":null,"long":"--worker-start-cmd <WORKER_START_CMD>","brief":"<div class=\"rich-text\"><p>A command executed before the start of the worker</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command.</p></div>"},{"id":"o49-16","short":null,"long":"--worker-stop-cmd <WORKER_STOP_CMD>","brief":"<div class=\"rich-text\"><p>A command executed after the worker terminates</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command. Note that this execution is best-effort. It is not guaranteed that the script will always be executed.</p></div>"},{"id":"o49-17","short":null,"long":"--worker-time-limit <WORKER_TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Worker's time limit</p></div>","description":"<div class=\"rich-text\"><p>Time limit after which workers in the submitted allocations will be stopped. By default, it is set to the time limit of the allocation. However, if you want the workers to be stopped sooner, for example to give `worker_stop_cmd` more time to execute before the allocation is killed, you can lower the worker time limit.</p><p>The limit must not be larger than the allocation time limit.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"}]}]},"c66":{"name":"taskarray","parent":"c64","brief":"<div class=\"rich-text\"><p>Jobs containing large amounts of similar tasks</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">taskarray</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c37":{"name":"show","parent":"c34","brief":"<div class=\"rich-text\"><p>Prints the stream content ordered by time</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-command\">show</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o37-1","short":null,"long":"--job <JOB>","brief":"<div class=\"rich-text\"><p>JobId</p></div>","description":null},{"id":"o37-2","short":null,"long":"--channel <CHANNEL>","brief":"<div class=\"rich-text\"><p>Show only the specific channel</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stdout, stderr</span>]</p></div>"}]}]},"c61":{"name":"dashboard","parent":"c0","brief":"<div class=\"rich-text\"><p>Starts CLI dashboard</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">dashboard</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-option\">[COMMAND]</span>"],"arguments":[],"categories":[]},"c24":{"name":"submit","parent":"c0","brief":"<div class=\"rich-text\"><p>Submit a new job</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">submit</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMANDS>...</span>"],"arguments":[{"name":"<COMMANDS>...","brief":"<div class=\"rich-text\"><p>Command that should be executed by each task</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o24-1","short":null,"long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>The name of the job</p></div>","description":null},{"id":"o24-2","short":null,"long":"--max-fails <MAX_FAILS>","brief":"<div class=\"rich-text\"><p>Maximum number tasks that may fail in the job</p></div>","description":"<div class=\"rich-text\"><p>If this limit is reached, the all other tasks are cancelled.</p></div>"},{"id":"o24-3","short":null,"long":"--nodes <NODES>","brief":"<div class=\"rich-text\"><p>The number of nodes</p></div>","description":"<div class=\"rich-text\"><p>If a positive integer is set; a multinode task is submitted. The zero means a subnode task.</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0</span>]</p></div>"},{"id":"o24-4","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The number and placement of CPUs for each job</p></div>","description":null},{"id":"o24-5","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>The request of resources in the form <NAME>=<AMOUNT></p></div>","description":null},{"id":"o24-6","short":null,"long":"--time-request <TIME_REQUEST>","brief":"<div class=\"rich-text\"><p>Minimal lifetime of the worker needed to start the job</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0ms</span>]</p></div>"},{"id":"o24-7","short":null,"long":"--pin <PIN>","brief":"<div class=\"rich-text\"><p>Pins the job to the cores specified in `--cpus`</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">taskset, omp</span>]</p></div>"},{"id":"o24-8","short":null,"long":"--cwd <CWD>","brief":"<div class=\"rich-text\"><p>Working directory for submitted tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes [default: %{SUBMIT_DIR}]</p></div>"},{"id":"o24-9","short":null,"long":"--stdout <STDOUT>","brief":"<div class=\"rich-text\"><p>Where to store the standard output of tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes.</p></div>"},{"id":"o24-10","short":null,"long":"--stderr <STDERR>","brief":"<div class=\"rich-text\"><p>Where to store the standard error output of tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes</p></div>"},{"id":"o24-11","short":null,"long":"--env <ENV>","brief":"<div class=\"rich-text\"><p>Additional environment variable for tasks</p></div>","description":"<div class=\"rich-text\"><p>You can pass this flag multiple times to pass multiple variables. `--env=KEY=VAL` - set an environment variable named `KEY` with the value `VAL`</p></div>"},{"id":"o24-12","short":null,"long":"--each-line <EACH_LINE>","brief":"<div class=\"rich-text\"><p>Creates a task for each line of the given file</p></div>","description":"<div class=\"rich-text\"><p>The corresponding line will be passed to the task in the environment variable `HQ_ENTRY`.</p></div>"},{"id":"o24-13","short":null,"long":"--from-json <FROM_JSON>","brief":"<div class=\"rich-text\"><p>Creates a task for each item of JSON array in the given file</p></div>","description":"<div class=\"rich-text\"><p>The corresponding item from the array will be passed as a JSON string to the task in the environment variable `HQ_ENTRY`.</p></div>"},{"id":"o24-14","short":null,"long":"--array <ARRAY>","brief":"<div class=\"rich-text\"><p>Creates a task array</p></div>","description":"<div class=\"rich-text\"><p>Create a task for each integer in the specified number range. Each task will be passed an environment variable `HQ_TASK_ID`.</p><p>`--array=3-5` - create a task array with three jobs with task IDs 3, 4, 5</p><p>`--array=5` - create a task array with one job with task ID 5</p></div>"},{"id":"o24-15","short":null,"long":"--priority <PRIORITY>","brief":"<div class=\"rich-text\"><p>Tasks priority</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0</span>]</p></div>"},{"id":"o24-16","short":null,"long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit per task. E.g. --time-limit=10min</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o24-17","short":null,"long":"--stream <STREAM>","brief":"<div class=\"rich-text\"><p>Stream the output of tasks into the given log file</p></div>","description":null},{"id":"o24-18","short":null,"long":"--task-dir","brief":"<div class=\"rich-text\"><p>Create a temporary directory for task(s)</p></div>","description":"<div class=\"rich-text\"><p>The path is provided in HQ_TASK_DIR. The directory is automatically deleted when the task is finished.</p></div>"},{"id":"o24-19","short":null,"long":"--crash-limit <CRASH_LIMIT>","brief":"<div class=\"rich-text\"><p>Sets the crash counter limit</p></div>","description":"<div class=\"rich-text\"><p>Crash counter counts how many times a task was in a running state while a worker was lost. The crash limit is *not* increased when terminated by `hq worker stop` or worker's time limit is reached.</p><p>If the crash limit is reached, the task is marked as failed.</p><p>The option takes a positive integer, "never-restart", or "unlimited".</p><ul><li>"never-restart" = task is never restarted even the crash counter is not increased * "unlimited" = there is no limit on crash counter value</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">5</span>]</p></div>"},{"id":"o24-20","short":null,"long":"--job <JOB>","brief":"<div class=\"rich-text\"><p>Attach a submission to an open job</p></div>","description":null},{"id":"o24-21","short":null,"long":"--wait","brief":"<div class=\"rich-text\"><p>Wait for the job to finish</p></div>","description":null},{"id":"o24-22","short":null,"long":"--progress","brief":"<div class=\"rich-text\"><p>Shows a progressbar</p></div>","description":"<div class=\"rich-text\"><p>It is the same as call `hq progress` immediately called after the submit</p></div>"},{"id":"o24-23","short":null,"long":"--stdin","brief":"<div class=\"rich-text\"><p>Attach the stdin to the task</p></div>","description":"<div class=\"rich-text\"><p>Captures stdin and start the task with the given stdin. The job will be submitted when the stdin is closed.</p></div>"},{"id":"o24-24","short":null,"long":"--directives <DIRECTIVES>","brief":"<div class=\"rich-text\"><p>Select directives parsing mode</p></div>","description":"<div class=\"rich-text\"><p>`auto`: Directives will be parsed if the suffix of the first command is ".sh".</p><p>`file`: Directives will be parsed regardless of the first command extension. `stdin`: Directives will be parsed from standard input passed to `hq submit` instead from the submitted command. `off`: Directives will not be parsed.</p><p>If enabled, HQ will parse `#HQ` directives from a file located in the first entered command. Parameters following the `#HQ` prefix will be used as parameters for `hq submit`.</p><p>Example (script.sh):</p><p>#!/bin/bash #HQ --name my-job #HQ --cpus=2</p><p>program --foo=bar</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">auto</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">auto, file, stdin, off</span>]</p></div>"}]}]},"c56":{"name":"prune","parent":"c52","brief":"<div class=\"rich-text\"><p>Prune a journal of a running server</p></div>","description":"<div class=\"rich-text\"><p>Connects to a server and remove completed tasks and non-active workers from the journal.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-command\">prune</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c51":{"name":"remove","parent":"c40","brief":"<div class=\"rich-text\"><p>Removes an allocation queue with the given ID</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">remove</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><QUEUE_ID></span>"],"arguments":[{"name":"<QUEUE_ID>","brief":"<div class=\"rich-text\"><p>ID of the allocation queue that should be removed</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o51-1","short":null,"long":"--force","brief":"<div class=\"rich-text\"><p>Remove the queue even if there are currently running jobs</p></div>","description":"<div class=\"rich-text\"><p>The running jobs will be canceled.</p></div>"}]}]},"c58":{"name":"data","parent":"c0","brief":"<div class=\"rich-text\"><p>Data object management inside a task</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">data</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c70":{"name":"python-api","parent":"c64","brief":"<div class=\"rich-text\"><p>Python API</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">python-api</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c43":{"name":"add","parent":"c40","brief":"<div class=\"rich-text\"><p>Add a new allocation queue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">add</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c59":{"name":"put","parent":"c58","brief":"<div class=\"rich-text\"><p>Inside a task, put a data object into the local datanode</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">data</span> <span class=\"usage-command\">put</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><DATA_ID></span> <span class=\"usage-argument\"><PATH></span>"],"arguments":[{"name":"<DATA_ID>","brief":"<div class=\"rich-text\"><p>DataId of task output</p></div>","description":null},{"name":"<PATH>","brief":"<div class=\"rich-text\"><p>Path of file/directory that should be uploaded</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o59-1","short":null,"long":"--mime-type <MIME_TYPE>","brief":"<div class=\"rich-text\"><p>DataId of task output</p></div>","description":null}]}]},"c16":{"name":"progress","parent":"c6","brief":"<div class=\"rich-text\"><p>Shows a progressbar with tasks/jobs</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">progress</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Job(s) to observe</p></div>","description":null}],"categories":[]},"c20":{"name":"task","parent":"c0","brief":"<div class=\"rich-text\"><p>Commands for tasks</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">task</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c33":{"name":"deploy-ssh","parent":"c25","brief":"<div class=\"rich-text\"><p>Deploy a set of workers using SSH.</p></div>","description":"<div class=\"rich-text\"><p>Note that to use this command, an OpenSSH-compatible `ssh` binary has to be available on the local node.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">deploy-ssh</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><HOSTFILE></span> <span class=\"usage-option\">[WORKER_START_ARGS]...</span>"],"arguments":[{"name":"<HOSTFILE>","brief":"<div class=\"rich-text\"><p>Path to a file with target hostnames</p></div>","description":"<div class=\"rich-text\"><p>Path to a file that contains the hostnames to which should workers be deployed to. Each line in the file should correspond to one hostname address.</p></div>"},{"name":"[WORKER_START_ARGS]...","brief":"<div class=\"rich-text\"><p>Arguments passed to `worker start` at the remote node.</p></div>","description":"<div class=\"rich-text\"><p>To display possible options, use `deploy-ssh -- --help`.</p></div>"}],"categories":[{"title":"Options","options":[{"id":"o33-1","short":null,"long":"--show-output","brief":"<div class=\"rich-text\"><p>Show log output of the spawned worker(s)</p></div>","description":null}]}]},"c47":{"name":"resume","parent":"c40","brief":"<div class=\"rich-text\"><p>Resume a previously paused allocation queue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">resume</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><QUEUE_ID></span>"],"arguments":[{"name":"<QUEUE_ID>","brief":"<div class=\"rich-text\"><p>ID of the allocation queue that should be resumed</p></div>","description":null}],"categories":[]},"c1":{"name":"server","parent":"c0","brief":"<div class=\"rich-text\"><p>Commands for the server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">server</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c21":{"name":"list","parent":"c20","brief":"<div class=\"rich-text\"><p>Displays task(s) associated with selected job(s)</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">task</span> <span class=\"usage-command\">list</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB_SELECTOR></span>"],"arguments":[{"name":"<JOB_SELECTOR>","brief":"<div class=\"rich-text\"><p>Select specific job(s)</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o21-1","short":null,"long":"--tasks <TASKS>","brief":"<div class=\"rich-text\"><p>Filter task(s) by ID</p></div>","description":null},{"id":"o21-2","short":null,"long":"--task-status <TASK_STATUS>","brief":"<div class=\"rich-text\"><p>Filter task(s) by status. You can use multiple states separated by a comma</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">waiting, running, finished, failed, canceled, opened</span>]</p></div>"},{"id":"o21-3","short":null,"long":"-v...","brief":"<div class=\"rich-text\"><p>Use this flag to enable verbose output</p></div>","description":null}]}]},"c4":{"name":"info","parent":"c1","brief":"<div class=\"rich-text\"><p>Show info of a running server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">server</span> <span class=\"usage-command\">info</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c38":{"name":"cat","parent":"c34","brief":"<div class=\"rich-text\"><p>Prints the content of a stream's channel</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-command\">cat</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB></span> <span class=\"usage-argument\"><CHANNEL></span>"],"arguments":[{"name":"<JOB>","brief":"<div class=\"rich-text\"><p>JobId</p></div>","description":null},{"name":"<CHANNEL>","brief":"<div class=\"rich-text\"><p>Channel name: "stdout" or "stderr"</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stdout, stderr</span>]</p></div>"}],"categories":[{"title":"Options","options":[{"id":"o38-1","short":null,"long":"--task <TASK>","brief":"<div class=\"rich-text\"><p>Prints only outputs of the selected tasks</p></div>","description":"<div class=\"rich-text\"><p>You can use the array syntax to specify multiple tasks.</p></div>"},{"id":"o38-2","short":null,"long":"--allow-unfinished","brief":"<div class=\"rich-text\"><p>Allow unfinished channels</p></div>","description":null}]}]},"c28":{"name":"list","parent":"c25","brief":"<div class=\"rich-text\"><p>Display information about workers</p></div>","description":"<div class=\"rich-text\"><p>By default, only running workers will be displayed.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">list</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o28-1","short":null,"long":"--all","brief":"<div class=\"rich-text\"><p>Display all workers</p></div>","description":null},{"id":"o28-2","short":null,"long":"--filter <FILTER>","brief":"<div class=\"rich-text\"><p>Select only workers in the given state</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">running, offline</span>]</p></div>"}]}]},"c39":{"name":"export","parent":"c34","brief":"<div class=\"rich-text\"><p>Exports stream into JSON</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-command\">export</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB></span>"],"arguments":[{"name":"<JOB>","brief":"<div class=\"rich-text\"><p>Job to export</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o39-1","short":null,"long":"--task <TASK>","brief":"<div class=\"rich-text\"><p>Exports only output of the selected tasks</p></div>","description":"<div class=\"rich-text\"><p>You can use the array syntax to specify multiple tasks.</p></div>"}]}]},"c19":{"name":"close","parent":"c6","brief":"<div class=\"rich-text\"><p>Close an open job</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">close</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Select job(s) to close</p></div>","description":null}],"categories":[]},"c54":{"name":"stream","parent":"c52","brief":"<div class=\"rich-text\"><p>Replays all old events, then streams new events</p></div>","description":"<div class=\"rich-text\"><p>The command blocks and waits for new live events until the server is not stopped.</p><p>Events are exported as NDJSON on `stdout`.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-command\">stream</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c64":{"name":"doc","parent":"c0","brief":"<div class=\"rich-text\"><p>Show documentation</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-option\">[COMMAND]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o64-1","short":null,"long":"--open","brief":"<div class=\"rich-text\"><p>Open the documentation in the default browser</p></div>","description":null}]}]},"c35":{"name":"summary","parent":"c34","brief":"<div class=\"rich-text\"><p>Prints summary of the log file</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-command\">summary</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c17":{"name":"task-ids","parent":"c6","brief":"<div class=\"rich-text\"><p>Prints task ids for a job</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">task-ids</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Selects job(s)</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o17-1","short":null,"long":"--filter <FILTER>","brief":"<div class=\"rich-text\"><p>Selects only tasks with the given state(s)</p></div>","description":"<div class=\"rich-text\"><p>You can use multiple states separated by a comma.</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">waiting, running, finished, failed, canceled, opened</span>]</p></div>"}]}]},"c46":{"name":"pause","parent":"c40","brief":"<div class=\"rich-text\"><p>Pause an existing allocation queue</p></div>","description":"<div class=\"rich-text\"><p>Paused queues do not submit new allocations.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">pause</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><QUEUE_ID></span>"],"arguments":[{"name":"<QUEUE_ID>","brief":"<div class=\"rich-text\"><p>ID of the allocation queue that should be paused</p></div>","description":null}],"categories":[]},"c27":{"name":"stop","parent":"c25","brief":"<div class=\"rich-text\"><p>Stop a worker</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">stop</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR_ARG></span>"],"arguments":[{"name":"<SELECTOR_ARG>","brief":"<div class=\"rich-text\"><p>Selectes worker(s) to stop</p></div>","description":null}],"categories":[]},"c50":{"name":"slurm","parent":"c48","brief":"<div class=\"rich-text\"><p>Try to create a SLURM allocation</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">dry-run</span> <span class=\"usage-command\">slurm</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-command\">--time-limit</span> <span class=\"usage-argument\"><TIME_LIMIT></span> <span class=\"usage-option\">[ADDITIONAL_ARGS]...</span>"],"arguments":[{"name":"[ADDITIONAL_ARGS]...","brief":"<div class=\"rich-text\"><p>Additional arguments passed to the submit command</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o50-1","short":"-b","long":"--backlog <BACKLOG>","brief":"<div class=\"rich-text\"><p>The maximal number of jobs that can be waiting in the queue</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o50-2","short":"-t","long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit (walltime) of PBS/Slurm allocations</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o50-3","short":"-w","long":"--workers-per-alloc <WORKERS_PER_ALLOC>","brief":"<div class=\"rich-text\"><p>The number of workers (nodes) in each allocation</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o50-4","short":null,"long":"--max-worker-count <MAX_WORKER_COUNT>","brief":"<div class=\"rich-text\"><p>Maximum number of concurrent workers in any state</p></div>","description":"<div class=\"rich-text\"><p>It counts workers that can be queued or running.</p></div>"},{"id":"o50-5","short":"-n","long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>Name of the allocation queue (for debug purposes only)</p></div>","description":null},{"id":"o50-6","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The cores assigned to the worker</p></div>","description":null},{"id":"o50-7","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>Resources provided by the worker</p></div>","description":"<div class=\"rich-text\"><p>Examples:</p><ul><li>`--resource gpus=[0,1,2,3]`</li><li>`--resource "memory=sum(1024)"`</li></ul></div>"},{"id":"o50-8","short":null,"long":"--group <GROUP>","brief":"<div class=\"rich-text\"><p>Sets worker's group</p></div>","description":"<div class=\"rich-text\"><p>Workers from the same group are used for multi-node tasks.</p><p>By default, the worker tries to detect allocation name from SLURM/PBS, if running outside a manager, then the group is empty.</p></div>"},{"id":"o50-9","short":null,"long":"--no-detect-resources","brief":"<div class=\"rich-text\"><p>Disables auto-detection of resources</p></div>","description":null},{"id":"o50-10","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Ignores hyper-threading while detecting CPU cores</p></div>","description":null},{"id":"o50-11","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o50-12","short":null,"long":"--overview-interval <OVERVIEW_INTERVAL>","brief":"<div class=\"rich-text\"><p>The period of reporting the overview to the server</p></div>","description":"<div class=\"rich-text\"><p>The overview contains information about HW usage. It serves only for the user's informing the user (e.g., in dashboard), the server scheduler is independent on worker's overviews.</p><p>Set to "0s" to disable overview updates. By default, overview updates are disabled to reduce network bandwidth and event journal size.</p></div>"},{"id":"o50-13","short":null,"long":"--on-server-lost <ON_SERVER_LOST>","brief":"<div class=\"rich-text\"><p>The policy when a connection to a server is lost</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">finish-running</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stop, finish-running</span>]</p></div>"},{"id":"o50-14","short":null,"long":"--no-dry-run","brief":"<div class=\"rich-text\"><p>Disables veryfing the parameter correctness via dry-run</p></div>","description":"<div class=\"rich-text\"><p>If dry run is enabled, the server tries to submit a probing allocation to verify whether the parameters are correct. The allocation is immediately canceled.</p></div>"},{"id":"o50-15","short":null,"long":"--worker-start-cmd <WORKER_START_CMD>","brief":"<div class=\"rich-text\"><p>A command executed before the start of the worker</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command.</p></div>"},{"id":"o50-16","short":null,"long":"--worker-stop-cmd <WORKER_STOP_CMD>","brief":"<div class=\"rich-text\"><p>A command executed after the worker terminates</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command. Note that this execution is best-effort. It is not guaranteed that the script will always be executed.</p></div>"},{"id":"o50-17","short":null,"long":"--worker-time-limit <WORKER_TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Worker's time limit</p></div>","description":"<div class=\"rich-text\"><p>Time limit after which workers in the submitted allocations will be stopped. By default, it is set to the time limit of the allocation. However, if you want the workers to be stopped sooner, for example to give `worker_stop_cmd` more time to execute before the allocation is killed, you can lower the worker time limit.</p><p>The limit must not be larger than the allocation time limit.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"}]}]},"c72":{"name":"changelog","parent":"c64","brief":"<div class=\"rich-text\"><p>Changelog</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">changelog</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c40":{"name":"alloc","parent":"c0","brief":"<div class=\"rich-text\"><p>Automatic allocation management</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c7":{"name":"list","parent":"c6","brief":"<div class=\"rich-text\"><p>Display information about jobs</p></div>","description":"<div class=\"rich-text\"><p>By default, only queued or running jobs will be displayed.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">list</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o7-1","short":null,"long":"--all","brief":"<div class=\"rich-text\"><p>Display all jobs</p></div>","description":null},{"id":"o7-2","short":null,"long":"--filter <FILTER>","brief":"<div class=\"rich-text\"><p>Display only jobs with the given states</p></div>","description":"<div class=\"rich-text\"><p>You can use multiple states separated by a comma.</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">waiting, running, finished, failed, canceled, opened</span>]</p></div>"}]}]},"c22":{"name":"info","parent":"c20","brief":"<div class=\"rich-text\"><p>Displays detailed task info</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">task</span> <span class=\"usage-command\">info</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOB_SELECTOR></span> <span class=\"usage-argument\"><TASK_SELECTOR></span>"],"arguments":[{"name":"<JOB_SELECTOR>","brief":"<div class=\"rich-text\"><p>Select specific job</p></div>","description":null},{"name":"<TASK_SELECTOR>","brief":"<div class=\"rich-text\"><p>Select specific task(s)</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o22-1","short":null,"long":"-v...","brief":"<div class=\"rich-text\"><p>Use this flag to enable verbose output</p></div>","description":null}]}]},"c14":{"name":"submit-file","parent":"c6","brief":"<div class=\"rich-text\"><p>Submit a job by a job definition file</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">submit-file</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><PATH></span>"],"arguments":[{"name":"<PATH>","brief":"<div class=\"rich-text\"><p>Path to file with job definition</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o14-1","short":null,"long":"--job <JOB>","brief":"<div class=\"rich-text\"><p>Attach a submission to an open job</p></div>","description":null}]}]},"c41":{"name":"list","parent":"c40","brief":"<div class=\"rich-text\"><p>Displays allocation queues</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">list</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c8":{"name":"summary","parent":"c6","brief":"<div class=\"rich-text\"><p>Display a summary with the number of jobs</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">summary</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c5":{"name":"generate-access","parent":"c1","brief":"<div class=\"rich-text\"><p>Generate an access file without starting the server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">server</span> <span class=\"usage-command\">generate-access</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-command\">--client-port</span> <span class=\"usage-argument\"><CLIENT_PORT></span> <span class=\"usage-command\">--worker-port</span> <span class=\"usage-argument\"><WORKER_PORT></span> <span class=\"usage-argument\"><ACCESS_FILE></span>"],"arguments":[{"name":"<ACCESS_FILE>","brief":"<div class=\"rich-text\"><p>The filename of the generated full access file</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o5-1","short":null,"long":"--client-file <CLIENT_FILE>","brief":"<div class=\"rich-text\"><p>The filename of the generated client's access file</p></div>","description":null},{"id":"o5-2","short":null,"long":"--worker-file <WORKER_FILE>","brief":"<div class=\"rich-text\"><p>The filename of the generated worker's access file</p></div>","description":null},{"id":"o5-3","short":null,"long":"--host <HOST>","brief":"<div class=\"rich-text\"><p>Override the target host name</p></div>","description":"<div class=\"rich-text\"><p>If not set, the local hostname is used</p></div>"},{"id":"o5-4","short":null,"long":"--client-host <CLIENT_HOST>","brief":"<div class=\"rich-text\"><p>Override target host name for clients</p></div>","description":null},{"id":"o5-5","short":null,"long":"--worker-host <WORKER_HOST>","brief":"<div class=\"rich-text\"><p>Override target host name for workers</p></div>","description":null},{"id":"o5-6","short":null,"long":"--client-port <CLIENT_PORT>","brief":"<div class=\"rich-text\"><p>The port for connecting client</p></div>","description":null},{"id":"o5-7","short":null,"long":"--worker-port <WORKER_PORT>","brief":"<div class=\"rich-text\"><p>The port for connecting workers</p></div>","description":null}]}]},"c68":{"name":"worker","parent":"c64","brief":"<div class=\"rich-text\"><p>Deployment of workers</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">worker</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c3":{"name":"stop","parent":"c1","brief":"<div class=\"rich-text\"><p>Stop the server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">server</span> <span class=\"usage-command\">stop</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c13":{"name":"submit","parent":"c6","brief":"<div class=\"rich-text\"><p>Submit a new job</p></div>","description":"<div class=\"rich-text\"><p>This is the same as `hq submit`</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">submit</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMANDS>...</span>"],"arguments":[{"name":"<COMMANDS>...","brief":"<div class=\"rich-text\"><p>Command that should be executed by each task</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o13-1","short":null,"long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>The name of the job</p></div>","description":null},{"id":"o13-2","short":null,"long":"--max-fails <MAX_FAILS>","brief":"<div class=\"rich-text\"><p>Maximum number tasks that may fail in the job</p></div>","description":"<div class=\"rich-text\"><p>If this limit is reached, the all other tasks are cancelled.</p></div>"},{"id":"o13-3","short":null,"long":"--nodes <NODES>","brief":"<div class=\"rich-text\"><p>The number of nodes</p></div>","description":"<div class=\"rich-text\"><p>If a positive integer is set; a multinode task is submitted. The zero means a subnode task.</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0</span>]</p></div>"},{"id":"o13-4","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The number and placement of CPUs for each job</p></div>","description":null},{"id":"o13-5","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>The request of resources in the form <NAME>=<AMOUNT></p></div>","description":null},{"id":"o13-6","short":null,"long":"--time-request <TIME_REQUEST>","brief":"<div class=\"rich-text\"><p>Minimal lifetime of the worker needed to start the job</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0ms</span>]</p></div>"},{"id":"o13-7","short":null,"long":"--pin <PIN>","brief":"<div class=\"rich-text\"><p>Pins the job to the cores specified in `--cpus`</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">taskset, omp</span>]</p></div>"},{"id":"o13-8","short":null,"long":"--cwd <CWD>","brief":"<div class=\"rich-text\"><p>Working directory for submitted tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes [default: %{SUBMIT_DIR}]</p></div>"},{"id":"o13-9","short":null,"long":"--stdout <STDOUT>","brief":"<div class=\"rich-text\"><p>Where to store the standard output of tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes.</p></div>"},{"id":"o13-10","short":null,"long":"--stderr <STDERR>","brief":"<div class=\"rich-text\"><p>Where to store the standard error output of tasks</p></div>","description":"<div class=\"rich-text\"><p>The path must be accessible from worker nodes</p></div>"},{"id":"o13-11","short":null,"long":"--env <ENV>","brief":"<div class=\"rich-text\"><p>Additional environment variable for tasks</p></div>","description":"<div class=\"rich-text\"><p>You can pass this flag multiple times to pass multiple variables. `--env=KEY=VAL` - set an environment variable named `KEY` with the value `VAL`</p></div>"},{"id":"o13-12","short":null,"long":"--each-line <EACH_LINE>","brief":"<div class=\"rich-text\"><p>Creates a task for each line of the given file</p></div>","description":"<div class=\"rich-text\"><p>The corresponding line will be passed to the task in the environment variable `HQ_ENTRY`.</p></div>"},{"id":"o13-13","short":null,"long":"--from-json <FROM_JSON>","brief":"<div class=\"rich-text\"><p>Creates a task for each item of JSON array in the given file</p></div>","description":"<div class=\"rich-text\"><p>The corresponding item from the array will be passed as a JSON string to the task in the environment variable `HQ_ENTRY`.</p></div>"},{"id":"o13-14","short":null,"long":"--array <ARRAY>","brief":"<div class=\"rich-text\"><p>Creates a task array</p></div>","description":"<div class=\"rich-text\"><p>Create a task for each integer in the specified number range. Each task will be passed an environment variable `HQ_TASK_ID`.</p><p>`--array=3-5` - create a task array with three jobs with task IDs 3, 4, 5</p><p>`--array=5` - create a task array with one job with task ID 5</p></div>"},{"id":"o13-15","short":null,"long":"--priority <PRIORITY>","brief":"<div class=\"rich-text\"><p>Tasks priority</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">0</span>]</p></div>"},{"id":"o13-16","short":null,"long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit per task. E.g. --time-limit=10min</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o13-17","short":null,"long":"--stream <STREAM>","brief":"<div class=\"rich-text\"><p>Stream the output of tasks into the given log file</p></div>","description":null},{"id":"o13-18","short":null,"long":"--task-dir","brief":"<div class=\"rich-text\"><p>Create a temporary directory for task(s)</p></div>","description":"<div class=\"rich-text\"><p>The path is provided in HQ_TASK_DIR. The directory is automatically deleted when the task is finished.</p></div>"},{"id":"o13-19","short":null,"long":"--crash-limit <CRASH_LIMIT>","brief":"<div class=\"rich-text\"><p>Sets the crash counter limit</p></div>","description":"<div class=\"rich-text\"><p>Crash counter counts how many times a task was in a running state while a worker was lost. The crash limit is *not* increased when terminated by `hq worker stop` or worker's time limit is reached.</p><p>If the crash limit is reached, the task is marked as failed.</p><p>The option takes a positive integer, "never-restart", or "unlimited".</p><ul><li>"never-restart" = task is never restarted even the crash counter is not increased * "unlimited" = there is no limit on crash counter value</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">5</span>]</p></div>"},{"id":"o13-20","short":null,"long":"--job <JOB>","brief":"<div class=\"rich-text\"><p>Attach a submission to an open job</p></div>","description":null},{"id":"o13-21","short":null,"long":"--wait","brief":"<div class=\"rich-text\"><p>Wait for the job to finish</p></div>","description":null},{"id":"o13-22","short":null,"long":"--progress","brief":"<div class=\"rich-text\"><p>Shows a progressbar</p></div>","description":"<div class=\"rich-text\"><p>It is the same as call `hq progress` immediately called after the submit</p></div>"},{"id":"o13-23","short":null,"long":"--stdin","brief":"<div class=\"rich-text\"><p>Attach the stdin to the task</p></div>","description":"<div class=\"rich-text\"><p>Captures stdin and start the task with the given stdin. The job will be submitted when the stdin is closed.</p></div>"},{"id":"o13-24","short":null,"long":"--directives <DIRECTIVES>","brief":"<div class=\"rich-text\"><p>Select directives parsing mode</p></div>","description":"<div class=\"rich-text\"><p>`auto`: Directives will be parsed if the suffix of the first command is ".sh".</p><p>`file`: Directives will be parsed regardless of the first command extension. `stdin`: Directives will be parsed from standard input passed to `hq submit` instead from the submitted command. `off`: Directives will not be parsed.</p><p>If enabled, HQ will parse `#HQ` directives from a file located in the first entered command. Parameters following the `#HQ` prefix will be used as parameters for `hq submit`.</p><p>Example (script.sh):</p><p>#!/bin/bash #HQ --name my-job #HQ --cpus=2</p><p>program --foo=bar</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">auto</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">auto, file, stdin, off</span>]</p></div>"}]}]},"c25":{"name":"worker","parent":"c0","brief":"<div class=\"rich-text\"><p>Commands for workers</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c42":{"name":"info","parent":"c40","brief":"<div class=\"rich-text\"><p>Display allocations of the specified allocation queue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">info</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><QUEUE></span>"],"arguments":[{"name":"<QUEUE>","brief":"<div class=\"rich-text\"><p>ID of the allocation queue</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o42-1","short":null,"long":"--filter <FILTER>","brief":"<div class=\"rich-text\"><p>Display only allocations with the given state</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">queued, running, finished, failed</span>]</p></div>"}]}]},"c45":{"name":"slurm","parent":"c43","brief":"<div class=\"rich-text\"><p>Create a SLURM allocation queue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">add</span> <span class=\"usage-command\">slurm</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-command\">--time-limit</span> <span class=\"usage-argument\"><TIME_LIMIT></span> <span class=\"usage-option\">[ADDITIONAL_ARGS]...</span>"],"arguments":[{"name":"[ADDITIONAL_ARGS]...","brief":"<div class=\"rich-text\"><p>Additional arguments passed to the submit command</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o45-1","short":"-b","long":"--backlog <BACKLOG>","brief":"<div class=\"rich-text\"><p>The maximal number of jobs that can be waiting in the queue</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o45-2","short":"-t","long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit (walltime) of PBS/Slurm allocations</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o45-3","short":"-w","long":"--workers-per-alloc <WORKERS_PER_ALLOC>","brief":"<div class=\"rich-text\"><p>The number of workers (nodes) in each allocation</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o45-4","short":null,"long":"--max-worker-count <MAX_WORKER_COUNT>","brief":"<div class=\"rich-text\"><p>Maximum number of concurrent workers in any state</p></div>","description":"<div class=\"rich-text\"><p>It counts workers that can be queued or running.</p></div>"},{"id":"o45-5","short":"-n","long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>Name of the allocation queue (for debug purposes only)</p></div>","description":null},{"id":"o45-6","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The cores assigned to the worker</p></div>","description":null},{"id":"o45-7","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>Resources provided by the worker</p></div>","description":"<div class=\"rich-text\"><p>Examples:</p><ul><li>`--resource gpus=[0,1,2,3]`</li><li>`--resource "memory=sum(1024)"`</li></ul></div>"},{"id":"o45-8","short":null,"long":"--group <GROUP>","brief":"<div class=\"rich-text\"><p>Sets worker's group</p></div>","description":"<div class=\"rich-text\"><p>Workers from the same group are used for multi-node tasks.</p><p>By default, the worker tries to detect allocation name from SLURM/PBS, if running outside a manager, then the group is empty.</p></div>"},{"id":"o45-9","short":null,"long":"--no-detect-resources","brief":"<div class=\"rich-text\"><p>Disables auto-detection of resources</p></div>","description":null},{"id":"o45-10","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Ignores hyper-threading while detecting CPU cores</p></div>","description":null},{"id":"o45-11","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o45-12","short":null,"long":"--overview-interval <OVERVIEW_INTERVAL>","brief":"<div class=\"rich-text\"><p>The period of reporting the overview to the server</p></div>","description":"<div class=\"rich-text\"><p>The overview contains information about HW usage. It serves only for the user's informing the user (e.g., in dashboard), the server scheduler is independent on worker's overviews.</p><p>Set to "0s" to disable overview updates. By default, overview updates are disabled to reduce network bandwidth and event journal size.</p></div>"},{"id":"o45-13","short":null,"long":"--on-server-lost <ON_SERVER_LOST>","brief":"<div class=\"rich-text\"><p>The policy when a connection to a server is lost</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">finish-running</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stop, finish-running</span>]</p></div>"},{"id":"o45-14","short":null,"long":"--no-dry-run","brief":"<div class=\"rich-text\"><p>Disables veryfing the parameter correctness via dry-run</p></div>","description":"<div class=\"rich-text\"><p>If dry run is enabled, the server tries to submit a probing allocation to verify whether the parameters are correct. The allocation is immediately canceled.</p></div>"},{"id":"o45-15","short":null,"long":"--worker-start-cmd <WORKER_START_CMD>","brief":"<div class=\"rich-text\"><p>A command executed before the start of the worker</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command.</p></div>"},{"id":"o45-16","short":null,"long":"--worker-stop-cmd <WORKER_STOP_CMD>","brief":"<div class=\"rich-text\"><p>A command executed after the worker terminates</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command. Note that this execution is best-effort. It is not guaranteed that the script will always be executed.</p></div>"},{"id":"o45-17","short":null,"long":"--worker-time-limit <WORKER_TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Worker's time limit</p></div>","description":"<div class=\"rich-text\"><p>Time limit after which workers in the submitted allocations will be stopped. By default, it is set to the time limit of the allocation. However, if you want the workers to be stopped sooner, for example to give `worker_stop_cmd` more time to execute before the allocation is killed, you can lower the worker time limit.</p><p>The limit must not be larger than the allocation time limit.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"}]}]},"c36":{"name":"jobs","parent":"c34","brief":"<div class=\"rich-text\"><p>Prints jobs ids in the stream</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-command\">jobs</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c53":{"name":"export","parent":"c52","brief":"<div class=\"rich-text\"><p>Export events from a journal file</p></div>","description":"<div class=\"rich-text\"><p>Events are exported as NDJSON on `stdout`.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-command\">export</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><JOURNAL></span>"],"arguments":[{"name":"<JOURNAL>","brief":"<div class=\"rich-text\"><p>Path to a journal</p></div>","description":"<div class=\"rich-text\"><p>It had to be created with `hq server start --journal=<PATH>`.</p></div>"}],"categories":[]},"c74":{"name":"generate-completion","parent":"c0","brief":"<div class=\"rich-text\"><p>Generate shell completion script</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">generate-completion</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SHELL></span>"],"arguments":[{"name":"<SHELL>","brief":"<div class=\"rich-text\"><p>Shell flavour for which the completion script should be generated</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">bash, elvish, fish, powershell, zsh</span>]</p></div>"}],"categories":[]},"c6":{"name":"job","parent":"c0","brief":"<div class=\"rich-text\"><p>Commands for jobs</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c26":{"name":"start","parent":"c25","brief":"<div class=\"rich-text\"><p>Start a worker</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">start</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o26-1","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The cores assigned to the worker</p></div>","description":null},{"id":"o26-2","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>Resources provided by the worker</p></div>","description":"<div class=\"rich-text\"><p>Examples:</p><ul><li>`--resource gpus=[0,1,2,3]`</li><li>`--resource "memory=sum(1024)"`</li></ul></div>"},{"id":"o26-3","short":null,"long":"--group <GROUP>","brief":"<div class=\"rich-text\"><p>Sets worker's group</p></div>","description":"<div class=\"rich-text\"><p>Workers from the same group are used for multi-node tasks.</p><p>By default, the worker tries to detect allocation name from SLURM/PBS, if running outside a manager, then the group is empty.</p></div>"},{"id":"o26-4","short":null,"long":"--no-detect-resources","brief":"<div class=\"rich-text\"><p>Disables auto-detection of resources</p></div>","description":null},{"id":"o26-5","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Ignores hyper-threading while detecting CPU cores</p></div>","description":null},{"id":"o26-6","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o26-7","short":null,"long":"--overview-interval <OVERVIEW_INTERVAL>","brief":"<div class=\"rich-text\"><p>The period of reporting the overview to the server</p></div>","description":"<div class=\"rich-text\"><p>The overview contains information about HW usage. It serves only for the user's informing the user (e.g., in dashboard), the server scheduler is independent on worker's overviews.</p><p>Set to "0s" to disable overview updates. By default, overview updates are disabled to reduce network bandwidth and event journal size.</p></div>"},{"id":"o26-8","short":null,"long":"--heartbeat <HEARTBEAT>","brief":"<div class=\"rich-text\"><p>How often heartbeats are sent</p></div>","description":"<div class=\"rich-text\"><p>Heartbeats are used to detect worker's liveness. If the worker does not send a heartbeat for given time, then the worker is considered as lost.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">8s</span>]</p></div>"},{"id":"o26-9","short":null,"long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Worker time limit</p></div>","description":"<div class=\"rich-text\"><p>Worker exits after given time.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o26-10","short":null,"long":"--manager <MANAGER>","brief":"<div class=\"rich-text\"><p>Sets HPC job manager for the worker</p></div>","description":"<div class=\"rich-text\"><p>It modifies what variables are read from the environment</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">detect</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">detect, none, pbs, slurm</span>]</p></div>"},{"id":"o26-11","short":null,"long":"--hostname <HOSTNAME>","brief":"<div class=\"rich-text\"><p>Overwrites worker hostname</p></div>","description":null},{"id":"o26-12","short":null,"long":"--on-server-lost <ON_SERVER_LOST>","brief":"<div class=\"rich-text\"><p>The policy when a connection to a server is lost</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">stop</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stop, finish-running</span>]</p></div>"},{"id":"o26-13","short":null,"long":"--work-dir <WORK_DIR>","brief":"<div class=\"rich-text\"><p>Sets the working directory for the worker</p></div>","description":"<div class=\"rich-text\"><p>It is a directory for internal usage of the worker and where temporal task directories are created.</p><p>By default, it is placed in /tmp. It should *NOT* be placed on a network filesystem.</p></div>"},{"id":"o26-14","short":null,"long":"--max-parallel-downloads <MAX_PARALLEL_DOWNLOADS>","brief":"<div class=\"rich-text\"><p>The maximal parallel downloads for data objects</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">4</span>]</p></div>"},{"id":"o26-15","short":null,"long":"--max-download-tries <MAX_DOWNLOAD_TRIES>","brief":"<div class=\"rich-text\"><p>The maximal data object download tries</p></div>","description":"<div class=\"rich-text\"><p>Specifies how many times the worker tries to download a data object from the remote side before download is considered as failed.</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">8</span>]</p></div>"},{"id":"o26-16","short":null,"long":"--wait-between-download-tries <TIME>","brief":"<div class=\"rich-text\"><p>The delay between download attempts</p></div>","description":"<div class=\"rich-text\"><p>Sets how long to wait between failed downloads of data object. This time is multiplied by the number of previous retries. Therefore between 4th and 5th retry it waits 4 * the given duration</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1s</span>]</p></div>"}]}]},"c29":{"name":"hwdetect","parent":"c25","brief":"<div class=\"rich-text\"><p>Perform hardware detection</p></div>","description":"<div class=\"rich-text\"><p>This serves to test how a worker sees the hardware on a machine where command is invoked.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">hwdetect</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o29-1","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Detect only physical cores</p></div>","description":null}]}]},"c0":{"name":"hq","parent":null,"brief":"<div class=\"rich-text\"><p>Task execution system for clusters</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o0-1","short":"-h","long":"--help","brief":"<div class=\"rich-text\"><p>Print help (see a summary with '-h')</p></div>","description":null},{"id":"o0-2","short":"-V","long":"--version","brief":"<div class=\"rich-text\"><p>Print version</p></div>","description":null}]},{"title":"GLOBAL OPTIONS","options":[{"id":"o0-3","short":null,"long":"--server-dir <SERVER_DIR>","brief":"<div class=\"rich-text\"><p>The path where access files are stored</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[env: <span class=\"rt-config-value\">HQ_SERVER_DIR=</span>]</p></div>"},{"id":"o0-4","short":null,"long":"--colors <COLORS>","brief":"<div class=\"rich-text\"><p>Sets console color policy</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">auto</span>]</p><p>Possible values:</p><ul><li>auto: Use colors if the stdout is detected to be a terminal</li><li>always: Always use colors</li><li>never: Never use colors</li></ul></div>"},{"id":"o0-5","short":null,"long":"--output-mode <OUTPUT_MODE>","brief":"<div class=\"rich-text\"><p>Sets output formatting</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[env: <span class=\"rt-config-value\">HQ_OUTPUT_MODE=</span>]</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">cli</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">cli, json, quiet</span>]</p></div>"},{"id":"o0-6","short":null,"long":"--debug","brief":"<div class=\"rich-text\"><p>Enables more detailed log output</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[env: <span class=\"rt-config-value\">HQ_DEBUG=</span>]</p></div>"}]}]},"c48":{"name":"dry-run","parent":"c40","brief":"<div class=\"rich-text\"><p>Try to submit an allocation to test allocation parameters</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">dry-run</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c65":{"name":"job","parent":"c64","brief":"<div class=\"rich-text\"><p>Submitting and examining tasks and jobs</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">job</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c62":{"name":"stream","parent":"c61","brief":"<div class=\"rich-text\"><p>Stream events from a server</p></div>","description":"<div class=\"rich-text\"><p>Note: It will replay all events from the currently active journal file before new events are streamed.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">dashboard</span> <span class=\"usage-command\">stream</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c2":{"name":"start","parent":"c1","brief":"<div class=\"rich-text\"><p>Start the server</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">server</span> <span class=\"usage-command\">start</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[{"title":"Options","options":[{"id":"o2-1","short":null,"long":"--host <HOST>","brief":"<div class=\"rich-text\"><p>Hostname/IP of the machine under which is visible to others</p></div>","description":"<div class=\"rich-text\"><p>Default: hostname</p></div>"},{"id":"o2-2","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop.</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o2-3","short":null,"long":"--client-port <CLIENT_PORT>","brief":"<div class=\"rich-text\"><p>The port for client connections</p></div>","description":null},{"id":"o2-4","short":null,"long":"--worker-port <WORKER_PORT>","brief":"<div class=\"rich-text\"><p>The port for worker connections</p></div>","description":null},{"id":"o2-5","short":null,"long":"--journal <JOURNAL>","brief":"<div class=\"rich-text\"><p>The path to a journal file</p></div>","description":"<div class=\"rich-text\"><p>If the file already exists, the file is first used to restore the server state.</p></div>"},{"id":"o2-6","short":null,"long":"--journal-flush-period <JOURNAL_FLUSH_PERIOD>","brief":"<div class=\"rich-text\"><p>Configure how often should be the journal written.</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul><p class=\"rt-config\">[default: <span class=\"rt-config-value\">30s</span>]</p></div>"},{"id":"o2-7","short":null,"long":"--access-file <ACCESS_FILE>","brief":"<div class=\"rich-text\"><p>The path to an access file</p></div>","description":null},{"id":"o2-8","short":null,"long":"--disable-client-authentication-and-encryption","brief":"<div class=\"rich-text\"><p>If set, the client connection will NOT be AUTHENTICATED and ENCRYPTED.</p></div>","description":"<div class=\"rich-text\"><p>ANYONE CAN CONNECT TO THE SERVER AS CLIENT! USE AT YOUR OWN RISK.</p></div>"},{"id":"o2-9","short":null,"long":"--disable-worker-authentication-and-encryption","brief":"<div class=\"rich-text\"><p>If set, the worker connection will NOT be AUTHENTICATED and ENCRYPTED.</p></div>","description":"<div class=\"rich-text\"><p>ANYONE CAN CONNECT TO THE SERVER AS WORKER! USE AT YOUR OWN RISK.</p></div>"}]}]},"c11":{"name":"forget","parent":"c6","brief":"<div class=\"rich-text\"><p>Forget a job</p></div>","description":"<div class=\"rich-text\"><p>This will remove the job from the server's memory, forgetting it completely and reducing the server's memory usage.</p><p>You can only forget jobs that have been completed, i.e. that are not running or waiting to be executed. If they are not completed, you have to cancel these jobs first.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">forget</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Select job(s) to forget</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o11-1","short":null,"long":"--filter <FILTER>","brief":"<div class=\"rich-text\"><p>Forget only jobs with the given states</p></div>","description":"<div class=\"rich-text\"><p>You can use multiple states separated by a comma. You can only filter by states that mark a completed job.</p><p class=\"rt-config\">[default: <span class=\"rt-config-value\">finished,failed,canceled</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">finished, failed, canceled</span>]</p></div>"}]}]},"c34":{"name":"output-log","parent":"c0","brief":"<div class=\"rich-text\"><p>Operations for streaming logs</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">output-log</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><PATH></span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[{"name":"<PATH>","brief":"<div class=\"rich-text\"><p>Path of the log file</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o34-1","short":null,"long":"--server-uid <SERVER_UID>","brief":"<div class=\"rich-text\"><p>Filter files for the given server instance</p></div>","description":null}]}]},"c10":{"name":"cancel","parent":"c6","brief":"<div class=\"rich-text\"><p>Cancel a job</p></div>","description":"<div class=\"rich-text\"><p>This will cancel all job's tasks, stopping them from being computation.</p></div>","usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">cancel</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Select job(s) to cancel</p></div>","description":null}],"categories":[]},"c71":{"name":"cheatsheet","parent":"c64","brief":"<div class=\"rich-text\"><p>Cheatsheet with the most common HyperQueue commands</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">cheatsheet</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c9":{"name":"info","parent":"c6","brief":"<div class=\"rich-text\"><p>Display detailed information of a job</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">job</span> <span class=\"usage-command\">info</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><SELECTOR></span>"],"arguments":[{"name":"<SELECTOR>","brief":"<div class=\"rich-text\"><p>Single ID, ID range or `last` to display the most recently submitted job</p></div>","description":null}],"categories":[]},"c52":{"name":"journal","parent":"c0","brief":"<div class=\"rich-text\"><p>Journal management</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">journal</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><COMMAND></span>"],"arguments":[],"categories":[]},"c67":{"name":"resources","parent":"c64","brief":"<div class=\"rich-text\"><p>CPU and generic resources of tasks</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">doc</span> <span class=\"usage-command\">resources</span> <span class=\"usage-option\">[OPTIONS]</span>"],"arguments":[],"categories":[]},"c44":{"name":"pbs","parent":"c43","brief":"<div class=\"rich-text\"><p>Create a PBS allocation queue</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">alloc</span> <span class=\"usage-command\">add</span> <span class=\"usage-command\">pbs</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-command\">--time-limit</span> <span class=\"usage-argument\"><TIME_LIMIT></span> <span class=\"usage-option\">[ADDITIONAL_ARGS]...</span>"],"arguments":[{"name":"[ADDITIONAL_ARGS]...","brief":"<div class=\"rich-text\"><p>Additional arguments passed to the submit command</p></div>","description":null}],"categories":[{"title":"Options","options":[{"id":"o44-1","short":"-b","long":"--backlog <BACKLOG>","brief":"<div class=\"rich-text\"><p>The maximal number of jobs that can be waiting in the queue</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o44-2","short":"-t","long":"--time-limit <TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Time limit (walltime) of PBS/Slurm allocations</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o44-3","short":"-w","long":"--workers-per-alloc <WORKERS_PER_ALLOC>","brief":"<div class=\"rich-text\"><p>The number of workers (nodes) in each allocation</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">1</span>]</p></div>"},{"id":"o44-4","short":null,"long":"--max-worker-count <MAX_WORKER_COUNT>","brief":"<div class=\"rich-text\"><p>Maximum number of concurrent workers in any state</p></div>","description":"<div class=\"rich-text\"><p>It counts workers that can be queued or running.</p></div>"},{"id":"o44-5","short":"-n","long":"--name <NAME>","brief":"<div class=\"rich-text\"><p>Name of the allocation queue (for debug purposes only)</p></div>","description":null},{"id":"o44-6","short":null,"long":"--cpus <CPUS>","brief":"<div class=\"rich-text\"><p>The cores assigned to the worker</p></div>","description":null},{"id":"o44-7","short":null,"long":"--resource <RESOURCE>","brief":"<div class=\"rich-text\"><p>Resources provided by the worker</p></div>","description":"<div class=\"rich-text\"><p>Examples:</p><ul><li>`--resource gpus=[0,1,2,3]`</li><li>`--resource "memory=sum(1024)"`</li></ul></div>"},{"id":"o44-8","short":null,"long":"--group <GROUP>","brief":"<div class=\"rich-text\"><p>Sets worker's group</p></div>","description":"<div class=\"rich-text\"><p>Workers from the same group are used for multi-node tasks.</p><p>By default, the worker tries to detect allocation name from SLURM/PBS, if running outside a manager, then the group is empty.</p></div>"},{"id":"o44-9","short":null,"long":"--no-detect-resources","brief":"<div class=\"rich-text\"><p>Disables auto-detection of resources</p></div>","description":null},{"id":"o44-10","short":null,"long":"--no-hyper-threading","brief":"<div class=\"rich-text\"><p>Ignores hyper-threading while detecting CPU cores</p></div>","description":null},{"id":"o44-11","short":null,"long":"--idle-timeout <IDLE_TIMEOUT>","brief":"<div class=\"rich-text\"><p>Duration after which will an idle worker automatically stop</p></div>","description":"<div class=\"rich-text\"><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"},{"id":"o44-12","short":null,"long":"--overview-interval <OVERVIEW_INTERVAL>","brief":"<div class=\"rich-text\"><p>The period of reporting the overview to the server</p></div>","description":"<div class=\"rich-text\"><p>The overview contains information about HW usage. It serves only for the user's informing the user (e.g., in dashboard), the server scheduler is independent on worker's overviews.</p><p>Set to "0s" to disable overview updates. By default, overview updates are disabled to reduce network bandwidth and event journal size.</p></div>"},{"id":"o44-13","short":null,"long":"--on-server-lost <ON_SERVER_LOST>","brief":"<div class=\"rich-text\"><p>The policy when a connection to a server is lost</p></div>","description":"<div class=\"rich-text\"><p class=\"rt-config\">[default: <span class=\"rt-config-value\">finish-running</span>]</p><p class=\"rt-config\">[possible values: <span class=\"rt-config-value\">stop, finish-running</span>]</p></div>"},{"id":"o44-14","short":null,"long":"--no-dry-run","brief":"<div class=\"rich-text\"><p>Disables veryfing the parameter correctness via dry-run</p></div>","description":"<div class=\"rich-text\"><p>If dry run is enabled, the server tries to submit a probing allocation to verify whether the parameters are correct. The allocation is immediately canceled.</p></div>"},{"id":"o44-15","short":null,"long":"--worker-start-cmd <WORKER_START_CMD>","brief":"<div class=\"rich-text\"><p>A command executed before the start of the worker</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command.</p></div>"},{"id":"o44-16","short":null,"long":"--worker-stop-cmd <WORKER_STOP_CMD>","brief":"<div class=\"rich-text\"><p>A command executed after the worker terminates</p></div>","description":"<div class=\"rich-text\"><p>It is executed as a shell command. Note that this execution is best-effort. It is not guaranteed that the script will always be executed.</p></div>"},{"id":"o44-17","short":null,"long":"--worker-time-limit <WORKER_TIME_LIMIT>","brief":"<div class=\"rich-text\"><p>Worker's time limit</p></div>","description":"<div class=\"rich-text\"><p>Time limit after which workers in the submitted allocations will be stopped. By default, it is set to the time limit of the allocation. However, if you want the workers to be stopped sooner, for example to give `worker_stop_cmd` more time to execute before the allocation is killed, you can lower the worker time limit.</p><p>The limit must not be larger than the allocation time limit.</p><p>You can use either the `HH:MM:SS` format or a "humantime" format. For example:</p><ul><li>01:00:00 => 1 hour</li><li>02:05:10 => 2 hours, 5 minutes, 10 seconds</li><li>1h => 1 hour</li><li>2h5m10s => 2 hours, 5 minutes, 10 seconds</li><li>3h 10m 5s => 3 hours, 10 minutes, 5 seconds</li><li>2 hours 5 minutes => 2 hours, 5 minutes</li></ul></div>"}]}]},"c32":{"name":"wait","parent":"c25","brief":"<div class=\"rich-text\"><p>Waits on the connection of worker(s)</p></div>","description":null,"usages":["<span class=\"usage-command\">hq</span> <span class=\"usage-command\">worker</span> <span class=\"usage-command\">wait</span> <span class=\"usage-option\">[OPTIONS]</span> <span class=\"usage-argument\"><WORKER_COUNT></span>"],"arguments":[{"name":"<WORKER_COUNT>","brief":"<div class=\"rich-text\"><p>The number of worker(s) to wait on</p></div>","description":null}],"categories":[]}};
let searchResults = null;
let searchIndex = 0;
let currentCommand = "c0";
function toggleEvent(event, commandId) {
event.stopPropagation();
toggleCommand(commandId);
}
function toggleCommand(commandId, onlyExpand = false) {
const triangleElement = document.getElementById("triangle-" + commandId);
const isExpanded = triangleElement.classList.contains('expanded');
if (isExpanded && onlyExpand) {
return
}
const treeItem = triangleElement.parentElement;
const childrenContainer = treeItem.nextElementSibling;
triangleElement.classList.toggle('expanded');
if (isExpanded) {
triangleElement.classList.remove('expanded');
childrenContainer.classList.add('hidden');
} else {
triangleElement.classList.add('expanded');
childrenContainer.classList.remove('hidden');
}
}
function selectCommand(command, element) {
document.querySelectorAll('.tree-item').forEach(item => {
item.classList.remove('selected');
});
element.classList.add('selected');
showCommandDetails(command);
currentCommand = command;
}
function showCommandDetails(command) {
const data = commandData[command];
if (!data) {
return;
}
const usages = data.usages.map(usage => {
return `<div class="command-signature">${usage}</div>`;
}).join('');
let desc = "";
if (data.description) {
desc = `<div style="margin-top: 8px;">${data.description}</div>`
}
document.getElementById('commandInfo').innerHTML = `
<div class="info-brief">${data.brief}</div>
${usages} ${desc}
`;
if (data.arguments.length === 0) {
document.getElementById('argumentsInfo').innerHTML = '';
} else {
let items = data.arguments.map(argument => {
let desc = "";
let className = "";
let showMore = "";
let onClick = "";
if (argument.description) {
desc = `<div class="option-full-doc">${argument.description}</div>`;
className = "option-item-expandable";
showMore = '<div class="show-more-indicator">Show more</div>';
onClick = 'onClick="toggleFullDoc(this)"';
}
return `<div class="option-item ${className}" ${onClick}">
<div class="option-header">
<div class="option-main">
<div class="argument-name">${argument.name}</div>
<div class="option-description">${argument.brief}</div>
</div>
${showMore}
</div>
${desc}
</div>`
});
document.getElementById('argumentsInfo').innerHTML = `<div class="info-section">
<div class="info-header">
Arguments
</div>
<div class="info-content" id="optionsList">
${items.join("")}
</div>
</div>`;
}
if (data.categories.length === 0) {
document.getElementById('categoryList').innerHTML = '';
} else {
document.getElementById('categoryList').innerHTML = data.categories.map(category => {
const items = category.options.map(option => {
let desc = "";
let className = "";
let showMore = "";
let onClick = "";
if (option.description) {
desc = `<div class="option-full-doc">${option.description}</div>`;
className = "option-item-expandable";
showMore = '<div class="show-more-indicator">Show more</div>';
onClick = 'onClick="toggleFullDoc(this)"';
}
let short = "";
if (option.short) {
short = `<span class="option-short">${option.short},</span> `
}
return `<div class="option-item ${className}" id="${option.id}" ${onClick}">
<div class="option-header">
<div class="option-main">
<div class="option-name">${short}${option.long}</div>
<div class="option-description">${option.brief}</div>
</div>
${showMore}
</div>
${desc}
</div>`
});
return `<div class="info-section">
<div class="info-header">
${category.title}
</div>
<div class="info-content" id="optionsList">
${items.join("")}
</div>
</div>`
}
).join("");
}
}
function expandArgument(element) {
const fullDoc = element.querySelector('.option-full-doc');
const isExpanded = fullDoc.classList.contains('expanded');
document.querySelectorAll('.option-full-doc.expanded').forEach(doc => {
doc.classList.remove('expanded');
});
if (!isExpanded) {
fullDoc.classList.add('expanded');
}
}
function toggleFullDoc(element) {
const fullDoc = element.querySelector('.option-full-doc');
const isExpanded = fullDoc.classList.contains('expanded');
document.querySelectorAll('.option-full-doc.expanded').forEach(doc => {
doc.classList.remove('expanded');
});
if (!isExpanded) {
fullDoc.classList.add('expanded');
}
}
function expandCommandsTo(id) {
toggleCommand(id, true);
let command = commandData[id];
if (command.parent) {
expandCommandsTo(command.parent);
}
}
function performSearch() {
resetHighlights();
const searchTerm = document.getElementById('searchInput').value.toLowerCase();
if (!searchTerm) {
return;
}
const results = [];
const keys = Object.keys(commandData).toSorted();
keys.forEach(command => {
const data = commandData[command];
if (data.name.toLowerCase().includes(searchTerm)) {
results.push({command: command});
}
data.categories.forEach(category => {
category.options.forEach(option => {
if (option.long.toLowerCase().includes(searchTerm) || option.brief.toLowerCase().includes(searchTerm)) {
results.push({command: command, child_id: option.id});
}
})
})
})
searchResults = results;
searchIndex = 0;
navigateSearch(0);
updateSearchWidget();
}
function hideSearchWidget() {
const widget = document.getElementById('searchWidget');
widget.classList.remove('visible');
}
function resetHighlights() {
document.querySelectorAll('.search-highlight-command').forEach(item => {
item.classList.remove('search-highlight-command');
})
}
function navigateSearch(direction) {
if (searchResults.length === 0) {
return;
}
const newIndex = searchIndex + direction;
if (newIndex >= 0 && newIndex < searchResults.length) {
resetHighlights();
searchIndex = newIndex;
let result = searchResults[newIndex];
let parent = commandData[result.command].parent;
if (parent) {
expandCommandsTo(parent);
}
const commandNodeId = `node-${result.command}`;
selectCommand(result.command, document.getElementById(commandNodeId));
let elementId;
if (result.child_id) {
elementId = result.child_id;
} else {
elementId = commandNodeId;
}
let element = document.getElementById(elementId);
element.classList.add("search-highlight-command");
element.scrollIntoView({
behavior: 'smooth',
block: 'center'
});
updateSearchWidget();
}
}
function updateSearchWidget() {
const widget = document.getElementById('searchWidget');
if (searchResults.length > 0) {
const counter = document.getElementById('searchCounter');
const prevBtn = document.getElementById('searchPrev');
const nextBtn = document.getElementById('searchNext');
widget.classList.add('visible');
counter.textContent = `${searchIndex + 1}/${searchResults.length}`;
prevBtn.disabled = searchIndex === 0;
nextBtn.disabled = searchIndex === searchResults.length - 1;
} else {
widget.classList.remove('visible');
}
}
function resetSearch() {
if (searchResults) {
resetHighlights();
hideSearchWidget();
searchResults = null;
}
}
showCommandDetails('c0');
</script>
</body>
</html>