1 Any user that is a member of the wheel group can use "su -" to simulate
2 a root login. You can add a user to the wheel group with:
3 pw groupmod -n wheel -m user_name
4 -- Konstantinos Konstantinidis <kkonstan@duth.gr>
6 By pressing "Scroll Lock" you can use the arrow keys to scroll backward
7 through the console output. Press "Scroll Lock" again to turn it off.
8 Don't have a "Scroll Lock" key? The "Pause / Break" key acts alike.
10 Can't remember if you've installed a certain port or not? Try "pkg info
13 Ever wonder what those numbers after command names were, as in cat(1)? It's
14 the section of the manual the man page is in. "man man" will tell you more.
15 -- David Scheidt <dscheidt@tumbolia.com>
17 Forget how to spell a word or a variation of a word? Use
19 look portion_of_word_you_know
20 -- Dru <genesis@istar.ca>
22 Forget what directory you are in? Type "pwd".
23 -- Dru <genesis@istar.ca>
25 Forget when Easter is? Try "ncal -e". If you need the date for Orthodox
26 Easter, use "ncal -o" instead.
27 -- Dru <genesis@istar.ca>
29 FreeBSD is started up by the program 'init'. The first thing init does when
30 starting multiuser mode (ie, starting the computer up for normal use) is to
31 run the shell script /etc/rc. By reading /etc/rc and the /etc/rc.d/ scripts,
32 you can learn a lot about how the system is put together, which again will
33 make you more confident about what happens when you do something with it.
35 Handy bash(1) prompt: PS1="\u@\h \w \!$ "
36 -- David Scheidt <dscheidt@tumbolia.com>
38 Having trouble using fetch through a firewall? Try setting the environment
39 variable FTP_PASSIVE_MODE to yes, and see fetch(3) for more details.
41 If other operating systems have damaged your Master Boot Record, you can
42 reinstall it with gpart(8). See
43 "man gpart" for details.
45 If you accidentally end up inside vi, you can quit it by pressing Escape, colon
46 (:), q (q), bang (!) and pressing return.
48 If you do not want to get beeps in X11 (X Windows), you can turn them off with
52 If you have a CD-ROM drive in your machine, you can make the CD-ROM that is
53 presently inserted available by typing 'mount /cdrom' as root. The CD-ROM
54 will be available under /cdrom/. Remember to do 'umount /cdrom' before
55 removing the CD-ROM (it will usually not be possible to remove the CD-ROM
58 Note: This tip may not work in all configurations.
60 If you need a reminder to leave your terminal, type "leave +hhmm" where
61 "hhmm" represents in how many hours and minutes you need to leave.
62 -- Dru <genesis@istar.ca>
64 If you need to ask a question on the FreeBSD-questions mailing list then
66 https://docs.freebsd.org/en/articles/freebsd-questions
68 contains lots of useful advice to help you get the best results.
70 If you write part of a filename in tcsh,
71 pressing TAB will show you the available choices when there
72 is more than one, or complete the filename if there's only one match.
74 If you `set watch = (0 any any)' in tcsh, you will be notified when
75 someone logs in or out of your system.
77 If you use the C shell, add the following line to the .cshrc file in your
78 home directory to prevent core files from being written to disk:
81 -- Dru <genesis@istar.ca>
83 If you want df(1) and other commands to display disk sizes in
84 kilobytes instead of 512-byte blocks, set BLOCKSIZE in your
85 environment to 'K'. You can also use 'M' for Megabytes or 'G' for
86 Gigabytes. If you want df(1) to automatically select the best size
89 If you want to play CDs with FreeBSD, a utility for this is already included.
90 Type 'cdcontrol' then 'help' to learn more. (You may need to set the CDROM
91 environment variable in order to make cdcontrol want to start.)
93 If you'd like to keep track of applications in the FreeBSD ports tree, take a
96 https://www.freshports.org/
98 In order to make fetch (the FreeBSD downloading tool) ask for
99 username/password when it encounters a password-protected web page, you can set
100 the environment variable HTTP_AUTH to 'basic:*'.
102 In order to search for a string in some files, use 'grep' like this:
104 grep "string" filename1 [filename2 filename3 ...]
106 This will print out the lines in the files that contain the string. grep can
107 also do a lot more advanced searches - type 'man grep' for details.
109 In order to support national characters for European languages in tools like
110 less without creating other nationalisation aspects, set the environment
111 variable LC_ALL to 'en_US.UTF-8'.
113 "man firewall" will give advice for building a FreeBSD firewall using ipfw(8).
114 -- David Scheidt <dscheidt@tumbolia.com>
116 "man hier" will explain the way FreeBSD filesystems are normally laid out.
117 -- David Scheidt <dscheidt@tumbolia.com>
119 Man pages are divided into section depending on topic. There are 9 different
120 sections numbered from 1 (General Commands) to 9 (Kernel Developer's Manual).
121 You can get an introduction to each topic by typing
125 In other words, to get the intro to general commands, type
129 "man ports" gives many useful hints about installing FreeBSD ports.
131 "man security" gives very good advice on how to tune the security of your
134 "man tuning" gives some tips how to tune performance of your FreeBSD system.
135 -- David Scheidt <dscheidt@tumbolia.com>
137 Need to do a search in a manpage or in a file you've sent to a pager? Use
138 "/search_word". To repeat the same search, type "n" for next or "p" for
140 -- Dru <genesis@istar.ca>
142 Need to find the location of a program? Use "locate program_name".
143 -- Dru <genesis@istar.ca>
145 Need to leave your terminal for a few minutes and don't want to logout?
146 Use "lock -p". When you return, use your password as the key to unlock the
148 -- Dru <genesis@istar.ca>
150 Need to quickly empty a file? Use ": > filename".
151 -- Dru <genesis@istar.ca>
153 Need to quickly return to your home directory? Type "cd".
154 -- Dru <genesis@istar.ca>
156 Need to remove all those ^M characters from a DOS file? Try
158 tr -d \\r < dosfile > newfile
159 -- Originally by Dru <genesis@istar.ca>
161 Need to see the calendar for this month? Simply type "cal". To see the
162 whole year, type "cal -y".
163 -- Dru <genesis@istar.ca>
165 Need to see which daemons are listening for connection requests? Use
166 "sockstat -4l" for IPv4, and "sockstat -l" for IPv4 and IPv6.
167 -- Dru <genesis@istar.ca>
169 Need to see your routing table? Type "netstat -rn". The entry with the G
170 flag is your gateway.
171 -- Dru <genesis@istar.ca>
173 Nice bash prompt: PS1='(\[$(tput md)\]\t <\w>\[$(tput me)\]) $(echo $?) \$ '
174 -- Mathieu <mathieu@hal.interactionvirtuelle.com>
176 Over quota? "du -sh * | sort -h " will give you a sorted list of your
178 -- David Scheidt <dscheidt@tumbolia.com>
180 nc(1) (or netcat) is useful not only for redirecting input/output to
181 TCP or UDP connections, but also for proxying them with inetd(8).
183 sh (the default Bourne shell in FreeBSD) supports command-line editing. Just
184 ``set -o emacs'' or ``set -o vi'' to enable it. Use "<TAB>" key to complete
187 Simple tcsh prompt: set prompt = '%# '
189 The default editor in FreeBSD is vi, which is efficient to use when you have
190 learned it, but somewhat user-unfriendly. To use ee (an easier but less
191 powerful editor) instead, set the environment variable EDITOR to /usr/bin/ee
193 Time to change your password? Type "passwd" and follow the prompts.
194 -- Dru <genesis@istar.ca>
196 To change an environment variable in /bin/sh use:
201 To change an environment variable in tcsh you use: setenv NAME "value"
202 where NAME is the name of the variable and "value" its new value.
204 To clear the screen, use "clear". To re-display your screen buffer, press
205 the scroll lock key and use your page up button. When you're finished,
206 press the scroll lock key again to get your prompt back.
207 -- Dru <genesis@istar.ca>
209 You can press Ctrl-L while in the shell to clear the screen.
211 To determine whether a file is a text file, executable, or some other type
215 -- Dru <genesis@istar.ca>
217 To do a fast search for a file, try
221 locate uses a database that is updated every Saturday (assuming your computer
222 is running FreeBSD at the time) to quickly find files based on name only.
224 To erase a line you've written at the command prompt, use "Ctrl-U".
225 -- Dru <genesis@istar.ca>
227 To find out the hostname associated with an IP address, use
230 -- Dru <genesis@istar.ca>
232 To obtain a neat PostScript rendering of a manual page, use ``-t'' switch
233 of the man(1) utility: ``man -t <topic>''. For example:
235 man -t grep > grep.ps # Save the PostScript version to a file
237 man -t printf | lp # Send the PostScript directly to printer
239 To quickly create an empty file, use "touch filename".
240 -- Dru <genesis@istar.ca>
242 To read a compressed file without having to first uncompress it, use
243 "zcat" or "zless" to view it. There is also "bzcat", "bzless", "xzcat"
245 -- Dru <genesis@istar.ca>
247 To save disk space in your home directory, compress files you rarely
248 use with "gzip filename".
249 -- Dru <genesis@istar.ca>
251 To search for files that match a particular name, use find(1); for example
253 find / -name "*GENERIC*" -ls
255 will search '/', and all subdirectories, for files with 'GENERIC' in the name.
256 -- Stephen Hilton <nospam@hiltonbsd.com>
258 To see all of the directories on your FreeBSD system, type
260 find / -type d | less
264 find / -type f | less
266 To see how long it takes a command to run, type the word "time" before the
268 -- Dru <genesis@istar.ca>
270 To see how much disk space is left on your UFS partitions, use
273 -- Dru <genesis@istar.ca>
275 To see the 10 largest files in a directory or on a UFS partition, use
277 du -h /partition_or_directory_name | sort -rh | head
278 -- Dru <genesis@istar.ca>
280 To see the IP addresses currently set on your active interfaces, type
282 -- Dru <genesis@istar.ca>
284 To see the last 10 lines of a long file, use "tail filename". To see the
285 first 10 lines, use "head filename". To see new lines as they're appended
286 to a file, use "tail -f filename".
287 -- Dru <genesis@istar.ca>
289 To see the last time that you logged in, use lastlogin(8).
290 -- Dru <genesis@istar.ca>
292 To see the MAC addresses of the NICs on your system, type
295 -- Dru <genesis@istar.ca>
297 To see the output from when your computer started, run dmesg(8). If it has
298 been replaced with other messages, look at /var/run/dmesg.boot.
299 -- Francisco Reyes <lists@natserv.com>
301 Want colour in your directory listings? Use "ls -G". "ls -F" is also useful,
302 and they can be combined as "ls -FG".
304 Want to find a specific port? Just type the following under /usr/ports
305 or one of its subdirectories:
307 make search name=<port-name>
309 make search key=<keyword>
311 Want to know how many words, lines, or bytes are contained in a file? Type
313 -- Dru <genesis@istar.ca>
315 Want to see how much virtual memory you're using? Just type "swapinfo" to
316 be shown information about the usage of your swap partitions.
318 Want to strip UTF-8 BOM(Byte Order Mark) from given files?
320 sed -e '1s/^\xef\xbb\xbf//' < bomfile > newfile
322 Want to use sed(1) to edit a file in place? Well, to replace every 'e' with
323 an 'o', in a file named 'foo', you can do:
325 sed -i.bak s/e/o/g foo
327 And you'll get a backup of the original in a file named 'foo.bak', but if you
330 sed -i '' s/e/o/g foo
332 When you've made modifications to a file in vi(1) and then find that
333 you can't write it, type ``<ESC>!rm -f %'' then ``:w!'' to force the
336 This won't work if you don't have write permissions to the directory
337 and probably won't be suitable if you're editing through a symbolic link.
339 If you have sudo(8) installed and permissions to use it, type
340 ``<ESC>w ! sudo tee %'' to force a write.
342 You can adjust the volume of various parts of the sound system in your
343 computer by typing 'mixer <type>.volume=<volume>%'. To get a list of what
344 you can adjust, just type 'mixer'.
346 You can automatically download and install binary packages by doing
348 pkg install <package>
350 This will also automatically install the packages that are dependencies
351 for the package you install (ie, the packages it needs in order to work.)
353 You can change the video mode on all consoles by adding something like
354 the following to /etc/rc.conf:
358 You can use "vidcontrol -i mode | grep T" for a list of supported text
360 -- Konstantinos Konstantinidis <kkonstan@duth.gr>
362 You can disable tcsh's terminal beep if you `set nobeep'.
364 You can install extra packages for FreeBSD by using the ports system.
365 If you have installed it, you can download, compile, and install software by
368 # cd /usr/ports/<category>/<portname>
369 # make install && make clean
371 as root. The ports infrastructure will download the software, change it so
372 it works on FreeBSD, compile it, install it, register the installation so it
373 will be possible to automatically uninstall it, and clean out the temporary
374 working space it used. You can remove an installed port you decide you do not
375 want after all by typing
377 # cd /usr/ports/<category>/<portname>
382 You can look through a file in a nice text-based interface by typing
386 You can make a log of your terminal session with script(1).
388 You can often get answers to your questions about FreeBSD by searching in the
389 FreeBSD mailing list archives at
391 http://freebsd.markmail.org
393 You can open up a new split-screen window in (n)vi with :N or :E and then
394 use ^w to switch between the two.
396 You can permanently set environment variables for your shell by putting them
397 in a startup file for the shell. The name of the startup file varies
398 depending on the shell - csh and tcsh uses .login, bash, sh, ksh and zsh use
399 .profile. When using bash, sh, ksh or zsh, don't forget to export the
402 You can press Ctrl-D to quickly exit from a shell, or logout from a
404 -- Konstantinos Konstantinidis <kkonstan@duth.gr>
406 You can press up-arrow or down-arrow to walk through a list of
407 previous commands in tcsh.
409 You can search for documentation on a keyword by typing
413 You can `set autologout = 30' to have tcsh log you off automatically
414 if you leave the shell idle for more than 30 minutes.
416 You can use aliases to decrease the amount of typing you need to do to get
417 commands you commonly use. Examples of fairly popular aliases include (in
418 Bourne shell style, as in /bin/sh, bash, ksh, and zsh):
424 In csh or tcsh, these would be
430 To remove an alias, you can usually use 'unalias aliasname'. To list all
431 aliases, you can usually type just 'alias'.
433 You can use /etc/make.conf to control the options used to compile software
434 on this system. Example entries are in
435 /usr/share/examples/etc/make.conf and in make.conf(5).
436 For options that are set for building FreeBSD's kernel and its world, see
439 You can use "pkg info" to see a list of packages you have installed.
441 You can use the 'fetch' command to retrieve files over ftp, http or https.
443 fetch https://www.FreeBSD.org/images/beastie.png
445 will download the beastie image from the FreeBSD web site.
447 You can use "whereis" to search standard binary, manual page and source
448 directories for the specified programs. This can be particularly handy
449 when you are trying to find where in the ports tree an application is.
451 Try "whereis firefox" and "whereis whereis".
452 -- Konstantinos Konstantinidis <kkonstan@duth.gr>
454 Want to run the same command again?
455 In many shells (e.g., tcsh, zsh, bash) you can type "!!".
457 Want to go the directory you were just in?
460 Can't delete /usr/obj? Enter "chflags -R noschg /usr/obj" to remove the
461 system immutable flag for all files in /usr/obj.
463 -- Lars Engels <lme@FreeBSD.org>
465 Want to list all files of an installed package? Enter
466 "pkg info -l packagename".
468 -- Lars Engels <lme@FreeBSD.org>
470 Are you looking for a package? Search for it with
471 "pkg search part_of_package_name"
473 -- Lars Engels <lme@FreeBSD.org>
475 If you want to recursively copy a directory preserving file and directory
477 "cp -a source target"
479 -- Lars Engels <lme@FreeBSD.org>
481 Do you wonder what a terminal program is doing at the moment? dd(1) does not
482 show any throughput? Hit "^T" (Control + t) to send SIGINFO to the process
483 and see what it is doing.
485 -- Lars Engels <lme@FreeBSD.org>
487 Do you want to know which version of FreeBSD you are running? Enter
488 "freebsd-version -ku" to display kernel and userland version.
490 -- Lars Engels <lme@FreeBSD.org>
492 If you want to end one or more processes at a time using a regular expression
495 -- Lars Engels <lme@FreeBSD.org>
497 Do you want to run a program directly after some other process has ended? Use
498 "pwait pid && new_program"
500 -- Lars Engels <lme@FreeBSD.org>
502 When you want your users to be able to reboot or shutdown FreeBSD, add them
503 to the group "operator" and they are allowed to use shutdown(8) and poweroff(8).
505 -- Lars Engels <lme@FreeBSD.org>
507 If you need to create a FAT32 formatted USB thumb drive, find out its devicename
508 running dmesg(8) after inserting it. Then create an MBR schema, a single slice and
511 # gpart create -s MBR ${devicename}
512 # gpart add -t fat32 ${devicename}
513 # newfs_msdos -F 32 -L thumbdrive ${devicename}s1
515 -- Lars Engels <lme@FreeBSD.org>
517 If you want to get a sorted list of all services that are started when FreeBSD boots,
520 -- Lars Engels <lme@FreeBSD.org>
522 To easily configure your installed FreeBSD use bsdconfig(8).
524 -- Lars Engels <lme@FreeBSD.org>
526 After you compiled and installed a new version of FreeBSD, use etcupdate(8) to merge
527 configuration updates.
528 Run "etcupdate extract" once when your sources match your running system, then run
529 "etcupdate" after every upgrade and "etcupdate resolve" to resolve any conflicts.
531 -- Lars Engels <lme@FreeBSD.org>
533 Do you want to do a binary upgrade of your running FreeBSD installation? Use freebsd-update(8).
535 To install updates and patches for the running branch use
536 # freebsd-update fetch install
538 To upgrade to a newer release use
539 # freebsd-update upgrade -r ${name_of_release}
541 -- Lars Engels <lme@FreeBSD.org>
543 To run rc scripts in /etc/rc.d and /usr/local/etc/rc.d use service(8).
544 Run "service ${name_of_rc_script} start" to start a daemon and
545 "service ${name_of_rc_script} stop" to stop it.
547 -- Lars Engels <lme@FreeBSD.org>
549 If you don't want to edit /etc/rc.conf directly, use sysrc(8) to add and remove entries.
550 Use "sysrc name=value" to add an entry and "sysrc -x name" to delete an entry.
552 -- Lars Engels <lme@FreeBSD.org>
554 You can upload the dmesg of your system to help developers get an overview of commonly
555 used hardware and peripherals for FreeBSD. Use the curl package to upload it like this:
556 curl -v -d "nickname=$USER" -d "description=FreeBSD/$(uname -m) on \
557 $(kenv smbios.system.maker) $(kenv smbios.system.product)" -d "do=addd" \
558 --data-urlencode 'dmesg@/var/run/dmesg.boot' http://dmesgd.nycbug.org/index.cgi
560 Want to know how much memory (in bytes) your machine has installed? Let
561 sysctl(8) tell you with the following command:
565 The realmem value is memory before the kernel and modules are loaded, whereas
566 hw.physmem is what is left after they were loaded.
568 The number of active CPUs is displayed using this command:
572 -- Benedict Reuschling <bcr@FreeBSD.org>
574 When using ZFS as the file system the "df" command is reporting the pool size
575 and not file system sizes. It also does not know about descendent ZFS
576 datasets, snapshots, quotas, and reservations with their individual space usage.
577 Use the built-in "zfs list" command to get a better overview of space usage:
581 -- Benedict Reuschling <bcr@FreeBSD.org>
583 To learn more about what your system is doing, take a look at systat(1). For
584 example, to get various statistics related to virtual memory usage, process
585 scheduling, device interrupts, system name translation caching, and disk I/O,
590 Other values are icmp, icmp6, ifstat, iostat, ip, ip6, netstat, pigs, sctp,
591 swap, tcp, or zarc. You can switch between displays using :<display> and exit
592 back to your shell by typing
596 -- Benedict Reuschling <bcr@FreeBSD.org>
598 To set a quota of 10 GB for the user named foo on a ZFS dataset, run the
601 # zfs set userquota@foo=10G pool/home/foo
603 The zfs userspace command can display the quota and current space usage:
605 # zfs userspace pool/home/foo
607 To unset a quota, assign "none" as the value.
608 -- Benedict Reuschling <bcr@FreeBSD.org>
610 ZFS can display I/O statistics for a given pool using the iostat subcommand.
611 By default, it will display one line of current activity. To display stats
612 every 5 seconds run the following command (cancel with CTRL+C):
616 To view individual disk activities, specify the -v parameter:
620 Of course, both can be combined. For more options, see zpool(8).
621 -- Benedict Reuschling <bcr@FreeBSD.org>
623 FreeBSD's top(1) utility displays CPU statistics by default.
624 To display I/O activity for each process instead, run top like this:
628 -- Benedict Reuschling <bcr@FreeBSD.org>
630 ZFS keeps a history of commands run against a specific pool using the
631 history subcommand to zpool:
635 More details are available using the -i and -l parameters. Note that ZFS
636 will not keep the complete pool history forever and will remove older
637 events in favor of never ones.
638 -- Benedict Reuschling <bcr@FreeBSD.org>
640 To display the compression ratio for the ZFS dataset /var/log on the pool
641 mypool, run the following command:
643 zfs get refcompressratio mypool/var/log
645 The refcompressratio will only display the compression ratio for that specific
646 dataset, not the descendant datasets. To include the child datasets, the
647 command looks like this:
649 zfs get compressratio mypool/var
651 -- Benedict Reuschling <bcr@FreeBSD.org>
653 You can limit the depth of the displayed datasets in the "zfs list" output
654 using the -d parameter. To display only the first level of datasets below
655 mypool/usr and not the ones deeper than those, run this command:
657 zfs list -d 1 mypool/usr
659 -- Benedict Reuschling <bcr@FreeBSD.org>
661 The "zfs list" command can be filtered in multiple ways. To display just
662 the dataset name, use the -o parameter:
664 zfs list -o name mypool/usr
666 More columns and their order can be defined by separating them with commas:
668 zfs list -o mountpoint,name,avail
670 -- Benedict Reuschling <bcr@FreeBSD.org>
672 The output of "zfs list" can be sorted by a specific column using -s. To
673 sort the datasets by the "used" column in ascending order, run this command:
677 To sort in descending order instead, use -S:
681 -- Benedict Reuschling <bcr@FreeBSD.org>
683 To make the "zfs list" output more script-friendly, you can suppress the
684 output of the headers for each column by passing the -H parameter:
688 Another helpful option for script writers is -p, which displays the numbers
689 in non-rounded, exact values:
693 -- Benedict Reuschling <bcr@FreeBSD.org>
695 Before deleting a dataset or snapshot, perform a dry run using the -n
696 parameter. This is to make sure you really want to delete just that
697 dataset/snapshot and not any dependent ones. ZFS will display the resulting
698 action when -n is combined with the -v option without actually performing
701 zfs destroy -nrv mypool@mysnap
703 Once you are sure this is exactly what you intend to do, remove the -n
704 parameter to execute the destroy operation.
705 -- Benedict Reuschling <bcr@FreeBSD.org>
707 You can delete a range of ZFS snapshots (a-z) in multiple ways.
708 The following will delete d and all earlier snapshots:
710 zfs destroy mypool/data@%d
712 To delete d and all later snapshots:
714 zfs destroy mypool/data@d%
716 To delete all dataset snapshots:
718 zfs destroy mypool/data@%
720 Make sure to let ZFS perform a dry run (-n option) first and display (-v) what
721 it would do to confirm that the delete operation is removing exactly what you
723 -- Benedict Reuschling <bcr@FreeBSD.org>
725 To set a custom ZFS property on the mypool pool, you need to provide it
726 using the "key1:key2=value" syntax, where the colon (:) is used as the
727 separator and identifier from the built-in ZFS properties:
729 # zfs set warranty:expires=2038-01-19 mypool
731 The custom property is applied to all datasets and can be queried like any
732 built-in properties using zfs get:
734 zfs get warranty:expires mypool
736 To reset the value of a custom property, use the inherit subcommand:
738 # zfs inherit warranty:expires mypool
740 Removing a custom property from a pool is done using the -r flag to the
741 "zfs inherit" command:
743 # zfs inherit -r warranty:expires mypool
745 -- Benedict Reuschling <bcr@FreeBSD.org>
747 To delete a range of ZFS snapshots, use the % (percent) character after the
748 full path to the first snapshot that should be included. For example, to
749 simulate deleting snapshots a through (including) d, use this command:
751 # zfs destroy -rvn mypool/tmp@a%d
753 Once you are sure that this is what you want, remove the -n option:
755 # zfs destroy -rv mypool/tmp@a%d
757 -- Benedict Reuschling <bcr@FreeBSD.org>
759 You can prevent the removal of a ZFS snapshot by using the hold subcommand.
760 For example, to prevent the snapshot called milestone from deletion, run the
763 # zfs hold milestone_hold mypool/projects@my_milestone
765 The "zfs holds" command will list all current snapshots that are protected
766 this way (-r for a recursive list):
768 # zfs holds -r mypool
770 The TIMESTAMP column in the output of the above command is from when the
771 hold was created, not the snapshot it holds. The "zfs destroy" command will
772 echo a "dataset is busy" message on the console when it encounters a hold.
773 Use "zfs release" to release the hold on the snapshot:
775 # zfs release milestone_hold mypool/projects@my_milestone
777 -- Benedict Reuschling <bcr@FreeBSD.org>
779 A user "sender" needs the following permissions set to send a ZFS dataset:
781 # zfs allow -u sender send,snapshot txpool
783 On the receiving side, the user "receiver" requires these permissions:
785 # zfs allow -u receiver compression,mountpoint,mount,create,receive rxpool
787 -- Benedict Reuschling <bcr@FreeBSD.org>
789 Don't let your zpool fill up completely by creating a dataset with
792 # zfs create -o refreservation=<5% of total pool space> <poolname>/reserved
794 You can always shrink the reserve if you need the space, but your pool will
795 always have space left this way.
797 -- Benedict Reuschling <bcr@FreeBSD.org>
799 Sometimes a single slow HDD can cripple the performance of your entire system.
800 You can spot one like this:
802 # gstat -I5s | sort -rn -k9 | head
804 -- Alan Somers <asomers@FreeBSD.org>
806 FreeBSD's ps(1) can create a dependency tree based on parent/child
807 relationships between processes, like this:
811 -- Daniel Ebdrup Jensen <debdrup@FreeBSD.org>
813 It is possible to measure the resident memory set:
815 $ vmstat -o | awk 'NR>1 { t[$7] += $1 } \
816 END { for (i in t) printf "%s %d\n",i,t[i] }'
818 The rows have the following meaning:
819 df = default (not assigned a specific pager)
826 This will be reported in number of pages, so it needs to be multiplied by the
827 page size of the architecture which can be found via:
829 $ sysctl -n hw.pagesize
831 -- Daniel Ebdrup Jensen <debdrup@FreeBSD.org>
833 To establish a serial connection to anything including a USB device,
834 nothing more than cu(1) is needed:
836 $ cu -s 9600 -l /dev/ttyU0
838 -- Daniel Ebdrup Jensen <debdrup@FreeBSD.org>
840 You can control kernel stack(9) traces on ^T (tty info) by setting
841 kern.tty_info_kstacks to 0 (off), 1 (on), or 2 (verbose), e.g.:
843 # sysctl kern.tty_info_kstacks=2
845 -- Michael Gmelin <grembo@FreeBSD.org>