NAME App::VirtualBoxUtils - Utilities related to VirtualBox VERSION This document describes version 0.001 of App::VirtualBoxUtils (from Perl distribution App-VirtualBoxUtils), released on 2024-11-15. SYNOPSIS DESCRIPTION This distribution includes several utilities related to VirtualBox: 1. kill-virtualbox 2. pause-and-unpause-virtualbox 3. pause-virtualbox 4. ps-virtualbox 5. terminate-virtualbox 6. unpause-virtualbox 7. virtualbox-is-paused FUNCTIONS pause_and_unpause_virtualbox Usage: pause_and_unpause_virtualbox(%args) -> [$status_code, $reason, $payload, \%result_meta] Pause and unpause VirtualBox alternately. The "pause-and-unpause" action pause and unpause VirtualBox in an alternate fashion, by default every 5 minutes and 30 seconds. This is a compromise to save CPU time most of the time. If you run this routine, it will start pausing and unpausing VirtualBox. When you want to use the VirtualBox, press Ctrl-C to interrupt the routine. Then after you are done with the virtual machines and want to pause-and-unpause again, you can re-run this routine. You can customize the periods via the "periods" option. See also the separate "pause_virtualbox" and the "unpause_virtualbox" routines. This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * periods => *array[duration]* Pause and unpause times, in seconds. For example, to pause for 5 minutes, then unpause 10 seconds, then pause for 2 minutes, then unpause for 30 seconds (then repeat the pattern), you can use: 300,10,120,30 * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) pause_virtualbox Usage: pause_virtualbox(%args) -> [$status_code, $reason, $payload, \%result_meta] Pause (kill -STOP) VirtualBox. See also the "unpause_virtualbox" and the "pause_and_unpause_virtualbox" routines. This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) ps_virtualbox Usage: ps_virtualbox(%args) -> [$status_code, $reason, $payload, \%result_meta] List VirtualBox processes. This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) terminate_virtualbox Usage: terminate_virtualbox(%args) -> [$status_code, $reason, $payload, \%result_meta] Terminate VirtualBox (by default with -KILL). This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * signal => *unix::signal* (No description) * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) unpause_virtualbox Usage: unpause_virtualbox(%args) -> [$status_code, $reason, $payload, \%result_meta] Unpause (resume, continue, kill -CONT) VirtualBox. See also the "pause_virtualbox" and the "pause_and_unpause_virtualbox" routines. This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) virtualbox_is_paused Usage: virtualbox_is_paused(%args) -> [$status_code, $reason, $payload, \%result_meta] Check whether VirtualBox is paused. VirtualBox is defined as paused if *all* of its processes are in 'stop' state. This function is not exported. Arguments ('*' denotes required arguments): * cmndline_pat => *re_from_str* Filter processes using regex against their cmndline. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * exec_pat => *re_from_str* Filter processes using regex against their exec. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * fname_pat => *re_from_str* Filter processes using regex against their fname. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * pid_pat => *re_from_str* Filter processes using regex against their pid. If one of the "*-pat" options are specified, then instead of the default heuristic rules to find the VirtualBox processes, these "*-pat" options are solely used to determine which processes are the VirtualBox processes. * quiet => *true* (No description) * users => *array[unix::uid::exists]* Kill VirtualBox processes that belong to certain user(s) only. Returns an enveloped result (an array). First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata. Return value: (any) HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . SEE ALSO AUTHOR perlancar CONTRIBUTING To contribute, you can send patches by email/via RT, or send pull requests on GitHub. Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via: % prove -l If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me. COPYRIGHT AND LICENSE This software is copyright (c) 2024 by perlancar . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.