id
: A unique UUID for the queryproject_id
: id of project where command is to be executed (required)path
: path of working directory for the command (default: ““)command
: command to be executed (required)args
: command line options for the command (default: [])timeout
: maximum allowed time, in seconds (default: 10)aggregate
: If there are multiple attempts to run the given command with the same time, they are all aggregated and run only one time by the project; if requests comes in with a greater value (time, sequence number, etc.), they all run in another group after the first one finishes. Meant for compiling code on save.max_output
: maximum number of characters in the outputbash
: if true, args are ignored and command is run as a bash command (default: false)err_on_exit
: if exit code is nonzero send error return message instead of the usual output (default: true)
Execute a shell command in a given project.
Examples:
Simple built-in shell command.
curl -u sk_abcdefQWERTY090900000000: \ -d command=pwd \ -d project_id=e49e86aa-192f-410b-8269-4b89fd934fba \ https://cocalc.com/api/v1/project_exec ==> {"event":"project_exec_output", "id":"8a78a37d-b2fb-4e29-94ae-d66acdeac949", "stdout":"/projects/e49e86aa-192f-410b-8269-4b89fd934fba\n","stderr":"","exit_code":0}
Shell command with different working directory.
curl -u sk_abcdefQWERTY090900000000: \ -d command=pwd \ -d path=Private \ -d project_id=e49e86aa-192f-410b-8269-4b89fd934fba \ https://cocalc.com/api/v1/project_exec ==> {"event":"project_exec_output", "id":"8a78a37d-b2fb-4e29-94ae-d66acdeac949", "stdout":"/projects/e49e86aa-192f-410b-8269-4b89fd934fba/Private\n","stderr":"","exit_code":0}
Command line arguments specified by ‘args’ option. Note JSON format for request parameters.
curl -u sk_abcdefQWERTY090900000000: \ -H 'Content-Type: application/json' \ -d '{"command":"echo","args":["xyz","abc"],"project_id":"e49e86aa-192f-410b-8269-4b89fd934fba"}' \ https://cocalc.com/api/v1/project_exec ==> {"event":"project_exec_output", "id":"39289ba7-0333-48ad-984e-b25c8b8ffa0e", "stdout":"xyz abc\n", "stderr":"", "exit_code":0}
Limiting output of the command to 3 characters.
curl -u sk_abcdefQWERTY090900000000: \ -H 'Content-Type: application/json' \ -d '{"command":"echo","args":["xyz","abc"],"max_output":3,"project_id":"e49e86aa-192f-410b-8269-4b89fd934fba"}' \ https://cocalc.com/api/v1/project_exec ==> {"event":"project_exec_output", "id":"02feab6c-a743-411a-afca-8a23b58988a9", "stdout":"xyz (truncated at 3 characters)", "stderr":"", "exit_code":0}
Setting a timeout for the command.
curl -u sk_abcdefQWERTY090900000000: \ -H 'Content-Type: application/json' \ -d '{"command":"sleep 5","timeout":2,"project_id":"e49e86aa-192f-410b-8269-4b89fd934fba"}' \ https://cocalc.com/api/v1/project_exec ==> {"event":"error", "id":"86fea3f0-6a90-495b-a541-9c14a25fbe58", "error":"Error executing command 'sleep 5' with args '' -- killed command 'bash /tmp/f-11757-1677-8ei2z0.t4fex0qkt9', , "}
Notes: - Argument command
may invoke an executable file or a
built-in shell command. It may include a path and command line
arguments. - If option args
is provided, options must be sent as a
JSON object. - Argument path
is optional. When provided, path
is
relative to home directory in target project and specifies the working
directory in which the command will be run. - If the project is stopped
or archived, this API call will cause it to be started. Starting the
project can take several seconds. In this case, the call may return a
timeout error and will need to be repeated.