parrot_run(1)
β¨ parrot_run(1) β bestie edition β¨
okay so real talk, this is the manual page for parrot_run from the Cooperative Computing Tools, and if you've ever wanted to run a whole program inside a virtual filesystem that reaches across the internet like it's no big dealβ¦ yeah, that's this. it's giving glow-up for your file access. π
πΈ NAME πΈ
parrot_run β run a program in the Parrot virtual file system π¦
β¨ SYNOPSIS β¨
parrot_run [parrot_options] program [program_options]
π DESCRIPTION π
so like, parrot_run runs an application or a shell inside the Parrot virtual filesystem. Parrot redirects the application's system calls to remote storage systems. no cap. π«Ά
Parrot currently supports these remote storage systems: HTTP, GROW, FTP, GridFTP, iRODS, HDFS, XRootd, and Chirp. bestie, this list may vary depending on how Parrot was built β run parrot -h to see exactly what support is available on your system. π
Parrot works by trapping the application's system calls through the ptrace debugging interface. it does not require any special privileges to install or run, so it's genuinely useful to ordinary users that wish to access data across wide area networks. π the ptrace debugging interface does have some cost, so applications may run slower, depending on how many I/O operations they perform. lowkey a tradeoff but highkey worth it.
For complete details with examples, see the Parrot User's Manual at http://ccl.cse.nd.edu/software/manuals/parrot.html
π OPTIONS π
--check-driver <driver>β check for the presence of a given driver (e.g.http,ftp, etc) and return success if it is currently enabled. vibe check for drivers fr fr β-a,--chirp-auth=<unix|hostname|ticket|globus|kerberos>β use this Chirp authentication method. you can invoke this multiple times to indicate a preferred list, in order. π-b,--block-size=<bytes>β set the I/O block size hint.-c,--status-file=<file>β print exit status information tofile.-Cβ enable data channel authentication in GridFTP.-d,--debug=<flag>β enable debugging for this sub-system. π-Dβ disable small file optimizations.--dynamic-mountsβ enable the use ofparot_mountin this session.-Fβ enable file snapshot caching for all protocols. πΈ-fβ disable following symlinks.-G,--gid=<num>β fake this gid; real gid stays the same.-hβ show this screen. (hi bestie π)--helperβ enable use of helper library.-i,--tickets=<files>β comma-delimited list of tickets to use for authentication. ποΈ-I,--debug-level-irods=<num>β set the iRODS driver internal debug level.-Kβ checksum files where available.-kβ do not checksum files.-l,--ld-path=<path>β path told.soto use.-m,--ftab-file=<file>β use this file as a mountlist.-M,--mount=</foo=/bar>β mount (redirect)/footo/bar.-e,--env-list=<path>β record the environment variables.-n,--name-list=<path>β record all the file names. π--no-set-foregroundβ disable changing the foreground process group of the session.-N,--hostname=<name>β pretend that this is my hostname. main character energy, honestly. πββοΈ-o,--debug-file=<file>β write debugging output to this file. by default, debugging is sent to stderr (":stderr"). you may specify logs to be sent to stdout (":stdout") instead.-O,--debug-rotate-max=<bytes>β rotate debug files of this size.-p,--proxy=<host:port>β use this proxy server for HTTP requests.-Qβ inhibit catalog queries to list/chirp.-r,--cvmfs-repos=<repos>β CVMFS repositories to enable (PARROT_CVMFS_REPO).--cvmfs-repo-switchingβ allow repository switching with CVMFS. π-R,--root-checksum=<cksum>β enforce this root filesystem checksum, where available.-sβ use streaming protocols without caching.-Sβ enable whole session caching for all protocols.--syscall-disable-debugβ disable tracee access to the Parrot debug syscall.-t,--tempdir=<dir>β where to store temporary files.-T,--timeout=<time>β maximum amount of time to retry failures.time)Maximum amount of time to retry failures. β°--time-stopβ stop virtual time at midnight, Jan 1st, 2001 UTC.--time-warpβ warp virtual time starting from midnight, Jan 1st, 2001 UTC. β³β¨-U,--uid=<num>β fake this unix uid; real uid stays the same.-u,--username=<name>β use this extended username.--fake-setuidβ track changes from setuid and setgid.--valgrindβ enable valgrind support for Parrot.-vβ display version number.--is-runningβ test is Parrot is already running. π-w,--work-dir=<dir>β initial working directory.-Wβ display table of system calls trapped.-Yβ force synchronous disk writes.-Zβ enable automatic decompression on.gzfiles. ποΈ--disable-service <service>β disable a compiled-in service (e.g.http,cvmfs, etc.)
π ENVIRONMENT VARIABLES π
parrot_run sets the environment variable PARROT_ENABLED to the value 1 for its child processes. this makes it possible to set a visible flag in your shell prompt when parrot_run is enabled. cute and functional, we love to see it. π
π EXIT STATUS π
parrot_run returns the exit status of the process that it runs. if parrot_run is unable to start the process, it will return non-zero. simple as that bestie. β¨
π¦ EXAMPLES π¦
to access a single remote file using vi:
% parrot_run vi /anonftp/ftp.gnu.org/pub/README
you can also run an entire shell inside of Parrot, like this:
% parrot_run bash
% cd /anonftp/ftp.gnu.org/pub
% ls -la
% cat README
% exit
to see the list of available Chirp servers around the world:
% parrot_run ls -la /chirp
Parrot can record the names of all the accessed files and the environment variables during the execution process of one program, like this:
% parrot_run --name-list list.txt --env-list envlist ls ~
the environment variables at the starting moment of your program will be recorded into envlist. the absolute paths of all the accessed files, together with the system call types, will be recorded into list.txt. for example, the file /usr/bin/ls is accessed using the stat system call, like this:
% /usr/bin/ls|stat
π³ NOTES ON DOCKER π³
Docker by default blocks ptrace, the system call on which parrot relies. to run parrot inside docker, the container needs to be started using the --security-opt seccomp=unconfined command line argument. for example:
docker run --security-opt seccomp=unconfined MY-DOCKER-IMAGE
bestie pls don't skip this part, docker will literally not let parrot do its thing otherwise π
π COPYRIGHT π
the Cooperative Computing Tools are Copyright (C) 2005-2019 The University of Notre Dame. this software is distributed under the GNU General Public License. see the file COPYING for details. π
π SEE ALSO π
- Cooperative Computing Tools Documentation
- Parrot User Manual
parrot_run(1)parrot_cp(1)parrot_getacl(1)parrot_setacl(1)parrot_mkalloc(1)parrot_lsalloc(1)parrot_locate(1)parrot_timeout(1)parrot_whoami(1)parrot_mount(1)parrot_md5(1)parrot_package_create(1)parrot_package_run(1)chroot_package_run(1)
and that's the whole page bestie! this was CCTools 8.0.0 DEVELOPMENT era, documented on the parrot_run(1) manual page. go forth and virtualize ur filesystem, u iconic legend πβ¨π
π¦ where this page comes from
- debian bookworm: coop-computing-tools 9.9-2+b4 Β· GPL-2.0-only
- ubuntu jammy: coop-computing-tools 9.9-2ubuntu3 Β· GPL-2.0-only
- ubuntu noble: coop-computing-tools 9.9-4ubuntu4 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms