f69af9b3d2
(attach_process): Use window pid if cygwin pid isn't available (yet). (create_child): Use either DEBUG_ONLY_THIS_PROCESS or DEBUG_PROCESS, exclusively. (Suggested by Conrad.Scott@dsl.pipex.com)
762 lines
33 KiB
Plaintext
762 lines
33 KiB
Plaintext
<sect1 id="using-utils"><title>Cygwin Utilities</title>
|
|
|
|
<para>Cygwin comes with a number of command-line utilities that are
|
|
used to manage the UNIX emulation portion of the Cygwin environment.
|
|
While many of these reflect their UNIX counterparts, each was written
|
|
specifically for Cygwin.</para>
|
|
|
|
<sect2 id="cygcheck"><title>cygcheck</title>
|
|
|
|
<screen>
|
|
Usage: cygcheck [-s] [-v] [-r] [-h] [program ...]
|
|
-c check current package setup
|
|
-h give help about the info
|
|
-s system information
|
|
-v verbose output (indented) (for -s or programs)
|
|
-r registry search (requires -s)
|
|
-V version info
|
|
You must at least give either -s or a program name
|
|
</screen>
|
|
|
|
<para>The <command>cygcheck</command> program is a diagnostic utility
|
|
that examines your system and reports the information that is
|
|
significant to the proper operation of Cygwin programs. It can give
|
|
information about a specific program (or program) you are trying to
|
|
run, general system information, or both. If you list one or more
|
|
programs on the command line, it will diagnose the runtime environment
|
|
of that program or programs. If you specify the <literal>-s</literal>
|
|
option, it will give general system information. If you specify
|
|
<literal>-s</literal> and list one or more programs on the command line,
|
|
it reports on both.</para>
|
|
|
|
<para>The <literal>-c</literal> option causes the "program" arguments
|
|
to be interpreted as package names. <command>cygcheck</command> will
|
|
report the current version of the package that you specify. With no
|
|
arguments, <command>cygcheck</command> will report on all packages.</para>
|
|
|
|
<para>The <command>cygcheck</command> program should be used to send
|
|
information about your system to Cygnus for troubleshooting (if your
|
|
support representative requests it). When asked to run this command,
|
|
include all the options plus any commands you are having trouble with,
|
|
and save the output so that you can mail it to Cygnus, like
|
|
this:</para>
|
|
|
|
<screen>
|
|
<prompt>C:\Cygnus></prompt> <userinput>cygcheck -s -v -r -h > tocygnus.txt</userinput>
|
|
</screen>
|
|
|
|
<para>The <literal>-v</literal> option causes the output to be more
|
|
verbose. What this means is that additional information will be
|
|
reported which is usually not interesting, such as the internal
|
|
version numbers of DLLs, additional information about recursive DLL
|
|
usage, and if a file in one directory in the PATH also occurs in other
|
|
directories on the PATH. </para>
|
|
|
|
<para>The <literal>-r</literal> option causes
|
|
<command>cygcheck</command> to search your registry for information
|
|
that is relevent to Cygnus programs. These registry entries are the
|
|
ones that have "Cygnus" in the name. If you are paranoid about
|
|
privacy, you may remove information from this report, but please keep
|
|
in mind that doing so makes it harder for Cygnus to diagnose your
|
|
problems.</para>
|
|
|
|
<para>The <literal>-h</literal> option prints additional helpful
|
|
messages in the report, at the beginning of each section. It also
|
|
adds table column headings. While this is useful information, it also
|
|
adds some to the size of the report, so if you want a compact report
|
|
or if you know what everything is already, just leave this out.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="cygpath"><title>cygpath</title>
|
|
|
|
<screen>
|
|
Usage: cygpath [-p|--path] (-w|--windows) ([-s|--short-name]|[-l|--long-name]) filename
|
|
Usage: cygpath [-p|--path] (-u|--unix) filename
|
|
Usage: cygpath (-H|--homeroot)|(-S|--sysdir)|(-W|--windir) [-s|--short-name]
|
|
Usage: cygpath [-A|--allusers] (-D|--desktop)|(-P|--smprograms) [-s|--short-name]
|
|
-a|--absolute output absolute path
|
|
-c|--close handle close handle (for use in captured process)
|
|
-f|--file file read file for input path information
|
|
-i|--ignore ignore missing argument
|
|
-l|--long-name print Windows long form of filename
|
|
-p|--path filename argument is a path
|
|
-s|--short-name print Windows short form of filename
|
|
-u|--unix print Unix form of filename
|
|
-v|--version output version information and exit
|
|
-w|--windows print Windows form of filename
|
|
-A|--allusers use `All Users' instead of current user for -D, -P
|
|
-H|--homeroot output `Profiles' directory (home root) and exit
|
|
-D|--desktop output `Desktop' directory and exit
|
|
-P|--smprograms output Start Menu `Programs' directory and exit
|
|
-S|--sysdir output system directory and exit
|
|
-W|--windir output `Windows' directory and exit
|
|
</screen>
|
|
|
|
<para>The <command>cygpath</command> program is a utility that
|
|
converts Windows native filenames to Cygwin POSIX-style pathnames and
|
|
back. It can be used when a Cygwin program needs to pass a file name
|
|
to a native Windows program, or expects to get a file name from a
|
|
native Windows program. You may use the long or short option names
|
|
interchangeably, even though only the short ones are described
|
|
here.</para>
|
|
|
|
<para>The <literal>-u</literal> and <literal>-w</literal> options
|
|
indicate whether you want a conversion from Windows to UNIX (POSIX)
|
|
format (<literal>-u</literal>) or a conversion from UNIX (POSIX) to
|
|
Windows format (<literal>-w</literal>). You must give exactly
|
|
one of these. To give neither or both is an error. Use the
|
|
<literal>-l</literal> or <literal>-s</literal> option in combination
|
|
with the <literal>-w</literal> option to convert to Windows long or
|
|
short form.</para>
|
|
|
|
<para>Caveat: The <literal>-l</literal> option does not work if the
|
|
<em>check_case</em> parameter of <em>CYGWIN</em> is set to <em>strict</em>,
|
|
since Cygwin is not able to match any Windows short path in this mode.
|
|
</para>
|
|
|
|
<para>The <literal>-p</literal> option means that you want to convert
|
|
a path-style string rather than a single filename. For example, the
|
|
PATH environment variable is semicolon-delimited in Windows, but
|
|
colon-delimited in UNIX. By giving <literal>-p</literal> you are
|
|
instructing <command>cygpath</command> to convert between these
|
|
formats.</para>
|
|
|
|
<para>The <literal>-i</literal> option supresses the print out of the
|
|
usage message if no filename argument was given. It can be used in
|
|
make file rules converting variables to a proper format that may be
|
|
omitted.</para>
|
|
|
|
<example><title>Example cygpath usage</title>
|
|
<screen>
|
|
#!/bin/sh
|
|
for i in `echo *.exe | sed 's/\.exe/.cc/'`
|
|
do
|
|
notepad "`cygpath -w $i`"
|
|
done
|
|
</screen>
|
|
</example>
|
|
|
|
<para>The capital options
|
|
<literal>-D</literal>, <literal>-H</literal>, <literal>-P</literal>,
|
|
<literal>-S</literal>, and <literal>-W</literal> output directories used
|
|
by Windows that are not the same on all systems, for example
|
|
<literal>-S</literal> might output C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM.
|
|
The <literal>-A</literal> option forces use of the "All Users" directories
|
|
instead of the current user for the <literal>-D</literal> and
|
|
<literal>-P</literal> options. The <literal>-H</literal> shows the Windows'
|
|
profiles directory that can be used as root of home.
|
|
On Win9x systems with only a single user, <literal>-A</literal> has no
|
|
effect; <literal>-D</literal> and <literal>-AD</literal> would have the
|
|
same output.
|
|
The <literal>-ws</literal> options can be combined with the capital options.
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="kill"><title>kill</title>
|
|
|
|
<screen>
|
|
Usage: kill [-f] [-sigN] [-s sigN] pid1 [pid2 ...]
|
|
Usage: kill -l [signal]
|
|
Usage: Kill -h
|
|
</screen>
|
|
|
|
<para>The <command>kill</command> program allows you to send arbitrary
|
|
signals to other Cygwin programs. The usual purpose is to end a
|
|
running program from some other window when ^C won't work, but you can
|
|
also send program-specified signals such as SIGUSR1 to trigger actions
|
|
within the program, like enabling debugging or re-opening log files.
|
|
Each program defines the signals they understand.</para>
|
|
|
|
<para>Note that, unless you specific the <literal>-f</literal> option,
|
|
the "pid" values are the Cygwin pids, not the Windows pids. To get a
|
|
list of running programs and their Cygwin pids, use the Cygwin
|
|
<command>ps</command> program. <command>ps -W</command> will display
|
|
<emphasis>all</emphasis> windows pids.</para>
|
|
|
|
<para>The <command>kill -l</command> option prints the name of the
|
|
given signal, or a list of all signal names if no signal is given.</para>
|
|
|
|
<para><command>kill -h</command> just displays the kill usage message.</para>
|
|
|
|
<para>To send a specific signal, use the <literal>-signN</literal>
|
|
option, either with a signal number or a signal name (minus the "SIG"
|
|
part), like these examples:</para>
|
|
|
|
<example><title>Using the kill command</title>
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>kill 123</userinput>
|
|
<prompt>$</prompt> <userinput>kill -1 123</userinput>
|
|
<prompt>$</prompt> <userinput>kill -HUP 123</userinput>
|
|
<prompt>$</prompt> <userinput>kill -f 123</userinput>
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Here is a list of available signals, their numbers, and some
|
|
commentary on them, from the file
|
|
<literal><sys/signal.h></literal>, which should be considered
|
|
the official source of this information.</para>
|
|
|
|
<screen>
|
|
SIGHUP 1 hangup
|
|
SIGINT 2 interrupt
|
|
SIGQUIT 3 quit
|
|
SIGILL 4 illegal instruction (not reset when caught)
|
|
SIGTRAP 5 trace trap (not reset when caught)
|
|
SIGABRT 6 used by abort
|
|
SIGEMT 7 EMT instruction
|
|
SIGFPE 8 floating point exception
|
|
SIGKILL 9 kill (cannot be caught or ignored)
|
|
SIGBUS 10 bus error
|
|
SIGSEGV 11 segmentation violation
|
|
SIGSYS 12 bad argument to system call
|
|
SIGPIPE 13 write on a pipe with no one to read it
|
|
SIGALRM 14 alarm clock
|
|
SIGTERM 15 software termination signal from kill
|
|
SIGURG 16 urgent condition on IO channel
|
|
SIGSTOP 17 sendable stop signal not from tty
|
|
SIGTSTP 18 stop signal from tty
|
|
SIGCONT 19 continue a stopped process
|
|
SIGCHLD 20 to parent on child stop or exit
|
|
SIGCLD 20 System V name for SIGCHLD
|
|
SIGTTIN 21 to readers pgrp upon background tty read
|
|
SIGTTOU 22 like TTIN for output if (tp->t_local&LTOSTOP)
|
|
SIGIO 23 input/output possible signal
|
|
SIGPOLL 23 System V name for SIGIO
|
|
SIGXCPU 24 exceeded CPU time limit
|
|
SIGXFSZ 25 exceeded file size limit
|
|
SIGVTALRM 26 virtual time alarm
|
|
SIGPROF 27 profiling time alarm
|
|
SIGWINCH 28 window changed
|
|
SIGLOST 29 resource lost (eg, record-lock lost)
|
|
SIGUSR1 30 user defined signal 1
|
|
SIGUSR2 31 user defined signal 2
|
|
</screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="mkgroup"><title>mkgroup</title>
|
|
|
|
<screen>
|
|
usage: mkgroup [options] [domain]
|
|
This program prints a /etc/group file to stdout
|
|
Options:
|
|
-l,--local print local group information
|
|
-d,--domain print global group information from the domain
|
|
specified (or from the current domain if there is
|
|
no domain specified)
|
|
-o,--id-offset offset change the default offset (10000) added to uids
|
|
in domain accounts.
|
|
-s,--no-sids don't print SIDs in pwd field
|
|
(this affects ntsec)
|
|
-u,--users print user list in gr_mem field
|
|
-?,--help print this message
|
|
One of `-l' or `-d' must be given on NT/W2K.
|
|
</screen>
|
|
|
|
<para>The <command>mkgroup</command> program can be used to help
|
|
configure your Windows system to be more UNIX-like by creating an
|
|
initial <filename>/etc/group</filename> substitute (some commands need this
|
|
file) from your system information. It only works on NT.
|
|
To initially set up your machine,
|
|
you'd do something like this:</para>
|
|
|
|
<example><title>Setting up the groups file</title>
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>mkdir /etc</userinput>
|
|
<prompt>$</prompt> <userinput>mkgroup -l > /etc/group</userinput>
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Note that this information is static. If you change the group
|
|
information in your system, you'll need to regenerate the group file
|
|
for it to have the new information.</para>
|
|
|
|
<para>The <literal>-d</literal> and <literal>-l</literal> options
|
|
allow you to specify where the information comes from, either the
|
|
local machine or the default (or given) domain.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="mkpasswd"><title>mkpasswd</title>
|
|
|
|
<screen>
|
|
Usage: mkpasswd [options] [domain]
|
|
Usage: mkpasswd [OPTION]... [domain]
|
|
This program prints a /etc/passwd file to stdout
|
|
Options:
|
|
-l,--local print local user accounts
|
|
-d,--domain print domain accounts (from current domain
|
|
if no domain specified)
|
|
-o,--id-offset offset change the default offset (10000) added to uids
|
|
in domain accounts.
|
|
-g,--local-groups print local group information too
|
|
if no domain specified
|
|
-m,--no-mount don't use mount points for home dir
|
|
-s,--no-sids don't print SIDs in GCOS field
|
|
(this affects ntsec)
|
|
-p,--path-to-home path if user account has no home dir, use
|
|
path instead of /home/
|
|
-u,--username username only return information for the specified user
|
|
-?,--help displays this message
|
|
One of `-l', `-d' or `-g' must be given on NT/W2K.
|
|
</screen>
|
|
|
|
<para>The <command>mkpasswd</command> program can be used to help
|
|
configure your Windows system to be more UNIX-like by creating an
|
|
initial <filename>/etc/passwd</filename> substitute (some commands
|
|
need this file) from your system information. It only works on NT.
|
|
To initially set up your machine, you'd do something like this:</para>
|
|
|
|
<example><title>Setting up the passwd file</title>
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>mkdir /etc</userinput>
|
|
<prompt>$</prompt> <userinput>mkpasswd -l > /etc/passwd</userinput>
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Note that this information is static. If you change the user
|
|
information in your system, you'll need to regenerate the passwd file
|
|
for it to have the new information.</para>
|
|
|
|
<para>The <literal>-d</literal> and <literal>-l</literal> options
|
|
allow you to specify where the information comes from, either the
|
|
local machine or the default (or given) domain.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="passwd"><title>passwd</title>
|
|
|
|
<screen>
|
|
Usage passwd [name]
|
|
passwd [-x max] [-n min] [-i inact] [-L len]
|
|
passwd {-l|-u|-S} name
|
|
-x max set max age of passwords
|
|
-n min set min age of passwords
|
|
-i inact disables account after inact days of expiry
|
|
-L len set min password length
|
|
-l lock an account
|
|
-u unlock an account
|
|
-S show account information
|
|
</screen>
|
|
|
|
<para> <command>passwd</command> changes passwords for user accounts.
|
|
A normal user may only change the password for their own account,
|
|
the administrators may change the password for any account.
|
|
<command>passwd</command> also changes account information, such as
|
|
password expiry dates and intervals.</para>
|
|
|
|
<para>Password changes: The user is first prompted for their old
|
|
password, if one is present. This password is then encrypted and
|
|
compared against the stored password. The user has only one chance to
|
|
enter the correct password. The administrators are permitted to
|
|
bypass this step so that forgotten passwords may be changed.</para>
|
|
|
|
<para>The user is then prompted for a replacement password.
|
|
<command>passwd</command> will prompt again and compare the second entry
|
|
against the first. Both entries are require to match in order for the
|
|
password to be changed.</para>
|
|
|
|
<para>After the password has been entered, password aging information
|
|
is checked to see if the user is permitted to change their password
|
|
at this time. If not, <command>passwd</command> refuses to change the
|
|
password and exits.</para>
|
|
|
|
<para>Password expiry and length: The password aging information may be
|
|
changed by the administrators with the <literal>-x</literal>,
|
|
<literal>-n</literal> and <literal>-i</literal> options. The
|
|
<literal>-x</literal> option is used to set the maximum number of days
|
|
a password remains valid. After <emphasis>max</emphasis> days, the
|
|
password is required to be changed. The <literal>-n</literal> option is
|
|
used to set the minimum number of days before a password may be changed.
|
|
The user will not be permitted to change the password until
|
|
<emphasis>min</emphasis> days have elapsed. The <literal>-i</literal>
|
|
option is used to disable an account after the password has been expired
|
|
for a number of days. After a user account has had an expired password
|
|
for <emphasis>inact</emphasis> days, the user may no longer sign on to
|
|
the account. Allowed values for the above options are 0 to 999. The
|
|
<literal>-L</literal> option sets the minimum length of allowed passwords
|
|
for users, which doesn't belong to the administrators group, to
|
|
<emphasis>len</emphasis> characters. Allowed values for the minimum
|
|
password length are 0 to 14. In any of the above cases, a value of 0
|
|
means `no restrictions'.</para>
|
|
|
|
<para>Account maintenance: User accounts may be locked and unlocked with the
|
|
<literal>-l</literal> and <literal>-u</literal> flags. The
|
|
<literal>-l</literal> option disables an account. The <literal>-u</literal>
|
|
option re-enables an account.</para>
|
|
|
|
<para>The account status may be given with the <literal>-S</literal>
|
|
option. The status information is self explanatory.</para>
|
|
|
|
<para>Limitations: Users may not be able to change their password on
|
|
some systems.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="mount"><title>mount</title>
|
|
|
|
<screen>
|
|
Usage mount
|
|
mount [options] <win32path> <posixpath>
|
|
|
|
-b, --binary text files are equivalent to binary files
|
|
(newline = \n)
|
|
-c, --change-cygdrive-prefix change the cygdrive path prefix to <posixpath>
|
|
-f, --force force mount, don't warn about missing mount
|
|
point directories
|
|
-i, --import-old-mounts copy old registry mount table mounts into the current
|
|
mount areas
|
|
-p, --show-cygdrive-prefix show user and/or system cygdrive path prefix
|
|
-s, --system (default) add mount point to system-wide registry location
|
|
-t, --text (default) text files get \r\n line endings
|
|
-u, --user add mount point to user registry location
|
|
-x, --executable treat all files under mount point as executables
|
|
-X, --cygwin-executable treat all files under mount point as cygwin
|
|
executables. Use to speed up file access.
|
|
-E, --no-executable don't open files to see if they contain executable
|
|
magic. Use to speed up file access.
|
|
-m, --mount-commands write mount commands to replace user and
|
|
system mount points and cygdrive prefixes
|
|
|
|
When invoked without any arguments, mount displays the current mount table.
|
|
</screen>
|
|
|
|
<para>The <command>mount</command> program is used to map your drives
|
|
and shares onto Cygwin's simulated POSIX directory tree, much like as is
|
|
done by mount commands on typical UNIX systems. Please see
|
|
<Xref Linkend="mount-table"> for more information on the concepts
|
|
behind the Cygwin POSIX file system and strategies for using
|
|
mounts.</para>
|
|
|
|
<sect3><title>Using mount</title>
|
|
|
|
<para>If you just type <command>mount</command> with no parameters, it
|
|
will display the current mount table for you.</para>
|
|
|
|
<example>
|
|
<title>Displaying the current set of mount points</title>
|
|
<screen>
|
|
<prompt>c:\cygnus\></prompt> <userinput>mount</userinput>
|
|
Device Directory Type Flags
|
|
D: /d user textmode
|
|
C: / system textmode
|
|
</screen>
|
|
</example>
|
|
|
|
<para>In this example, the C
|
|
drive is the POSIX root and D drive is mapped to
|
|
<filename>/d</filename>. Note that in this case, the root mount is a
|
|
system-wide mount point that is visible to all users running Cygwin
|
|
programs, whereas the <filename>/d</filename> mount is only visible
|
|
to the current user.</para>
|
|
|
|
<para>The <command>mount</command> utility is also the mechanism for
|
|
adding new mounts to the mount table. The following example
|
|
demonstrates how to mount the directory
|
|
<filename>C:\cygnus\cygwin-b20\H-i586-cygwin32\bin</filename>
|
|
to <filename>/bin</filename> and the network directory
|
|
<filename>\\pollux\home\joe\data</filename> to <filename>/data</filename>.
|
|
<filename>/bin</filename> is assumed to already exist.</para>
|
|
|
|
<example>
|
|
<title>Adding mount points</title>
|
|
<screen>
|
|
<prompt>c:\cygnus\></prompt> <userinput>ls /bin /data</userinput>
|
|
ls: /data: No such file or directory
|
|
<prompt>c:\cygnus\></prompt> <userinput>mount C:\cygnus\cygwin-b20\H-i586-cygwin32\bin /bin</userinput>
|
|
<prompt>c:\cygnus\></prompt> <userinput>mount \\pollux\home\joe\data /data</userinput>
|
|
Warning: /data does not exist!
|
|
<prompt>c:\cygnus\></prompt> <userinput>mount</userinput>
|
|
Device Directory Type Flags
|
|
\\pollux\home\joe\data /data user textmode
|
|
C:\cygnus\cygwin-b20\H-i586-cygwin32\bin /bin user textmode
|
|
D: /d user textmode
|
|
\\.\tape1: /dev/st1 user textmode
|
|
\\.\tape0: /dev/st0 user textmode
|
|
\\.\b: /dev/fd1 user textmode
|
|
\\.\a: /dev/fd0 user textmode
|
|
C: / system textmode
|
|
<prompt>c:\cygnus\></prompt> <userinput>ls /bin/sh</userinput>
|
|
/bin/sh
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Note that <command>mount</command> was invoked from the Windows
|
|
command shell in the previous example. In many Unix shells, including
|
|
bash, it is legal and convenient to use the forward "/" in Win32
|
|
pathnames since the "\" is the shell's escape character. </para>
|
|
|
|
<para>The "-s" flag to <command>mount</command> is used to add a mount
|
|
in the system-wide mount table used by all Cygwin users on the system,
|
|
instead of the user-specific one. System-wide mounts are displayed
|
|
by <command>mount</command> as being of the "system" type, as is the
|
|
case for the <filename>/</filename> partition in the last example.
|
|
Under Windows NT, only those users with Administrator priviledges are
|
|
permitted to modify the system-wide mount table.</para>
|
|
|
|
<para>Note that a given POSIX path may only exist once in the user
|
|
table and once in the global, system-wide table. Attempts to replace
|
|
the mount will fail with a busy error. The "-f" (force) flag causes
|
|
the old mount to be silently replaced with the new one. It will also
|
|
silence warnings about the non-existence of directories at the Win32
|
|
path location.</para>
|
|
|
|
<para>The "-b" flag is used to instruct Cygwin to treat binary and
|
|
text files in the same manner by default. Binary mode mounts are
|
|
marked as "binmode" in the Flags column of <command>mount</command>
|
|
output. By default, mounts are in text mode ("textmode" in the Flags
|
|
column).</para>
|
|
|
|
<para>The "-x" flag is used to instruct Cygwin that the mounted file
|
|
is "executable". If the "-x" flag is used with a directory then
|
|
all files in the directory are executable. Files ending in certain
|
|
extensions (.exe, .com, .bat, .cmd) are assumed to be executable
|
|
by default. Files whose first two characters begin with '#!' are
|
|
also considered to be executable. This option allows other files
|
|
to be marked as executable and avoids the overhead of opening each
|
|
file to check for a '#!'.</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3><title>Cygdrive mount points</title>
|
|
|
|
<para>Whenever Cygwin cannot use any of the existing mounts to convert
|
|
from a particular Win32 path to a POSIX one, Cygwin will, instead,
|
|
convert to a POSIX path using a default mount point:
|
|
<filename>/cygdrive</filename>. For example, if Cygwin accesses
|
|
<filename>Z:\foo</filename> and the Z drive is not currently in the
|
|
mount table, then <filename>Z:\</filename> will be accessible as
|
|
<filename>/cygdrive/Z</filename>. The default prefix of
|
|
<filename>/cygdrive</filename> may be changed via the
|
|
<Xref Linkend="mount"> command.</para>
|
|
|
|
<para>The <command>mount</command> utility can be used to change this
|
|
default automount prefix through the use of the
|
|
"--change-cygdrive-prefix" flag. In the following example, we will
|
|
set the automount prefix to <filename>/</filename>:</para>
|
|
|
|
<example>
|
|
<title>Changing the default prefix</title>
|
|
<screen>
|
|
<prompt>c:\cygnus\></prompt> <userinput>mount --change-cygdrive-prefix /</userinput>
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Note that you if you set a new prefix in this manner, you can
|
|
specify the "-s" flag to make this the system-wide default prefix. By
|
|
default, the cygdrive-prefix applies only to the current user. In the
|
|
same way, you can specify the "-b" flag such that all new automounted
|
|
filesystems default to binary mode file accesses.</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3><title>Limitations</title>
|
|
|
|
<para>Limitations: there is a hard-coded limit of 30 mount
|
|
points. Also, although you can mount to pathnames that do not start
|
|
with "/", there is no way to make use of such mount points.</para>
|
|
|
|
<para>Normally the POSIX mount point in Cygwin is an existing empty
|
|
directory, as in standard UNIX. If this is the case, or if there is a
|
|
place-holder for the mount point (such as a file, a symbolic link
|
|
pointing anywhere, or a non-empty directory), you will get the expected
|
|
behavior. Files present in a mount point directory before the mount
|
|
become invisible to Cygwin programs.
|
|
</para>
|
|
|
|
<para>It is sometimes desirable to mount to a non-existent directory,
|
|
for example to avoid cluttering the root directory with names
|
|
such as
|
|
<filename>a</filename>, <filename>b</filename>, <filename>c</filename>
|
|
pointing to disks.
|
|
Although <command>mount</command> will give you a warning, most
|
|
everything will work properly when you refer to the mount point
|
|
explicitly. Some strange effects can occur however.
|
|
For example if your current working directory is
|
|
<filename>/dir</filename>,
|
|
say, and <filename>/dir/mtpt</filename> is a mount point, then
|
|
<filename>mtpt</filename> will not show up in an <command>ls</command>
|
|
or
|
|
<command>echo *</command> command and <command>find .</command> will
|
|
not
|
|
find <filename>mtpt</filename>.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="ps"><title>ps</title>
|
|
|
|
<screen>
|
|
Usage ps [-aefl] [-u uid]
|
|
-a, -e show processes of all users
|
|
-f show process uids, ppids
|
|
-l show process uids, ppids, pgids, winpids
|
|
-s short process listing
|
|
-u uid show processes owned by uid
|
|
-W show all windows processes, not just cygwin processes
|
|
</screen>
|
|
|
|
<para>The <command>ps</command> program gives the status of all the
|
|
Cygwin processes running on the system (ps = "process status"). Due
|
|
to the limitations of simulating a POSIX environment under Windows,
|
|
there is little information to give. The PID column is the process ID
|
|
you need to give to the <command>kill</command> command. The WINPID
|
|
column is the process ID that's displayed by NT's Task Manager
|
|
program.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="umount"><title>umount</title>
|
|
|
|
<screen>
|
|
Usage umount [options] <posixpath>
|
|
-A, --remove-all-mounts remove all mounts
|
|
-c, --remove-cygdrive-prefix remove cygdrive prefix
|
|
-s, --system remove system mount (default)
|
|
-S, --remove-system-mounts remove all system mounts
|
|
-u, --user remove user mount
|
|
-U, --remove-user-mounts remove all user mounts
|
|
</screen>
|
|
|
|
<para>The <command>umount</command> program removes mounts from the
|
|
mount table. If you specify a POSIX path that corresponds to a
|
|
current mount point, <command>umount</command> will remove it from the
|
|
user-specific registry area. The -s flag may be used to specify
|
|
removing the mount from the system-wide registry area instead
|
|
(Administrator priviledges are required).</para>
|
|
|
|
<para>The <command>umount</command> utility may also be used to remove
|
|
all mounts of a particular type. With the extended options it is
|
|
possible to remove all mounts, all automatically-mounted mounts, all
|
|
mounts in the current user's registry area, or all mounts in the
|
|
system-wide registry area (with Administrator privileges).</para>
|
|
|
|
<para>See <Xref Linkend="mount">) for more information on the mount
|
|
table.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="strace"><title>strace</title>
|
|
|
|
<screen>
|
|
Usage strace [options] program [args...]
|
|
|
|
-b, --buffer-size=SIZE set size of output file buffer
|
|
-d, --no-delta don't display the delta-t microsecond timestamp
|
|
-f, --trace-children trace child processes (toggle -- default is "true")
|
|
-h, --help display help info
|
|
-m, --mask=MASK set message filter mask
|
|
-n, --crack-error-numbers output descriptive text instead of error
|
|
numbers for Windows errors
|
|
-o, --output=FILENAME set output file to FILENAME
|
|
-p, --pid=pid attach to a running process
|
|
-S, --flush-period=PERIOD flush buffered strace output every PERIOD secs
|
|
-t, --timestamp use an absolute hh:mm:ss timestamp insted of the
|
|
default microsecond timestamp. Implies -d
|
|
-v, --version display version info
|
|
-w, --new-window spawn program under test in a new window
|
|
|
|
MASK can be any combination of the following mnemonics and/or hex values
|
|
(0x is optional). Combine masks with '+' or ',' like so:
|
|
|
|
--mask=wm+system,malloc+0x00800
|
|
|
|
Mnemonic Hex Corresponding Def Description
|
|
=========================================================================
|
|
all 0x00001 (_STRACE_ALL) All strace messages.
|
|
flush 0x00002 (_STRACE_FLUSH) Flush output buffer after each message.
|
|
inherit 0x00004 (_STRACE_INHERIT) Children inherit mask from parent.
|
|
uhoh 0x00008 (_STRACE_UHOH) Unusual or weird phenomenon.
|
|
syscall 0x00010 (_STRACE_SYSCALL) System calls.
|
|
startup 0x00020 (_STRACE_STARTUP) argc/envp printout at startup.
|
|
debug 0x00040 (_STRACE_DEBUG) Info to help debugging.
|
|
paranoid 0x00080 (_STRACE_PARANOID) Paranoid info.
|
|
termios 0x00100 (_STRACE_TERMIOS) Info for debugging termios stuff.
|
|
select 0x00200 (_STRACE_SELECT) Info on ugly select internals.
|
|
wm 0x00400 (_STRACE_WM) Trace Windows msgs (enable _strace_wm).
|
|
sigp 0x00800 (_STRACE_SIGP) Trace signal and process handling.
|
|
minimal 0x01000 (_STRACE_MINIMAL) Very minimal strace output.
|
|
exitdump 0x04000 (_STRACE_EXITDUMP) Dump strace cache on exit.
|
|
system 0x08000 (_STRACE_SYSTEM) Cache strace messages.
|
|
nomutex 0x10000 (_STRACE_NOMUTEX) Don't use mutex for synchronization.
|
|
malloc 0x20000 (_STRACE_MALLOC) Trace malloc calls.
|
|
thread 0x40000 (_STRACE_THREAD) Thread-locking calls.
|
|
</screen>
|
|
|
|
<para>The <command>strace</command> program executes a program, and
|
|
optionally the children of the program, reporting any Cygwin DLL output
|
|
from the program(s) to file. This program is mainly useful for debugging
|
|
the Cygwin DLL itself.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="regtool"><title>regtool</title>
|
|
|
|
<screen>
|
|
Regtool Copyright (c) 2000 Red Hat Inc
|
|
regtool -h - print this message
|
|
regtool [-v|-p|-k|-l] list [key] - list subkeys and values
|
|
-p=postfix, like ls -p, appends / postfix to key names
|
|
-k=keys, lists only keys
|
|
-l=values, lists only values
|
|
regtool [-v] add [key\subkey] - add new subkey
|
|
regtool [-v] remove [key] - remove key
|
|
regtool [-v|-q] check [key] - exit 0 if key exists, 1 if not
|
|
regtool [-i|-s|-e|-m] set [key\value] [data ...] - set value
|
|
-i=integer -s=string -e=expand-string -m=multi-string
|
|
regtool [-v] unset [key\value] - removes value from key
|
|
regtool [-q] get [key\value] - prints value to stdout
|
|
-q=quiet, no error msg, just return nonzero exit if key/value missing
|
|
keys are like \prefix\key\key\key\value, where prefix is any of:
|
|
root HKCR HKEY_CLASSES_ROOT
|
|
config HKCC HKEY_CURRENT_CONFIG
|
|
user HKCU HKEY_CURRENT_USER
|
|
machine HKLM HKEY_LOCAL_MACHINE
|
|
users HKU HKEY_USERS
|
|
example: \user\software\Microsoft\Clock\iFormat
|
|
</screen>
|
|
|
|
<para>The <command>regtool</command> program allows shell scripts
|
|
to access and modify the Windows registry. Note that modifying the
|
|
Windows registry is dangerous, and carelessness here can result
|
|
in an unusable system. Be careful.</para>
|
|
|
|
<para>The <literal>-v</literal> option means "verbose". For most
|
|
commands, this causes additional or lengthier messages to be printed.
|
|
Conversely, the <literal>-q</literal> option supresses error messages,
|
|
so you can use the exit status of the program to detect if a key
|
|
exists or not (for example).</para>
|
|
|
|
<para>The <literal>list</literal> command lists the subkeys and values
|
|
belonging to the given key. The <literal>add</literal> command adds a
|
|
new key. The <literal>remove</literal> command removes a key. Note
|
|
that you may need to remove everything in the key before you may
|
|
remove it, but don't rely on this stopping you from accidentally
|
|
removing too much. The <literal>check</literal> command checks to see
|
|
if a key exists (the exit code of the program is zero if it does,
|
|
nonzero if it does not).</para>
|
|
|
|
<para>The <literal>set</literal> command sets a value within a key.
|
|
<literal>-i</literal> means the value is an integer (DWORD).
|
|
<literal>-s</literal> means the value is a string.
|
|
<literal>-e</literal> means it's an expanding string (it contains
|
|
embedded environment variables). <literal>-m</literal> means it's a
|
|
multi-string (list). If you don't specify one of these, it tries to
|
|
guess the type based on the value you give. If it looks like a
|
|
number, it's a number. If it starts with a percent, it's an expanding
|
|
string. If you give multiple values, it's a multi-string. Else, it's
|
|
a regular string.</para>
|
|
|
|
<para>The <literal>unset</literal> command removes a value from a key.
|
|
The <literal>get</literal> command gets the value of a value of a key,
|
|
and prints it (and nothing else) to stdout. Note: if the value
|
|
doesn't exist, an error message is printed and the program returns a
|
|
non-zero exit code. If you give <literal>-q</literal>, it doesn't
|
|
print the message but does return the non-zero exit code.</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|