ktrace – FreeBSD / Mac OS X Process Tracing and Reporting Tool

Posted on in Categories FreeBSD, Howto, Monitoring, OpenBSD, OS X, programming, Sys admin, Troubleshooting last updated April 16, 2008

Under Linux you can use strace or valgrind tool for reporting and finding a bug. However, under *BSD / Mac OS X you need to use ktrace as replacement for strace tool.

kreace runs on the following platforms:
=> FreeBSD
=> OpenBSD
=> Mac OS X
=> NetBSD

The ktrace utility enables kernel trace logging for the specified processes. Kernel trace data is logged to the file ktrace.out. The kernel operations that are traced include system calls, namei translations, sig nal processing, and I/O. Once tracing is enabled on a process, trace data will be logged until either the process exits or the trace point is cleared. A traced process can generate enormous amounts of log data quickly; It is strongly suggested that users memorize how to disable tracing before attempting to trace a process.

To trace all kernel operations for process id # 2546, enter:
$ ktrace -p 2546
To disable all tracing of process # 2546, enter:
$ ktrace -cp 2546
To disable tracing on all user-owned processes, and, if executed by root, all processes in the system:
# ktrace -C
Attach to process id # 123 and log trace records to myapp.dbg.log instead of ktrace.out.
$ ktrace -p 123 -f myapp.dbg.log
To enable tracing of I/O on process # 123
$ ktrace -ti -p 123
The -t option is very useful to trace various kernel trace points, one per letter. The following table equates the letters with the trace points:

  • c : trace system calls
  • n : trace namei translations
  • i : trace I/O
  • s : trace signal processing
  • u : userland traces
  • w : context switches
  • + : trace the default set of trace points – c, n, i, s, u

Run the command called myapp and track only system calls, enter:
$ ktrace -tc ./myapp
Please note that the output of ktrace is not as informative as strace, but it does help to solve many problems.

truss: trace system calls

FreeBSD has another tool called truss. It traces the system calls called by the specified process or program. Output is to the specified output file, or standard error by default.
Attach to an already-running process # 123, enter
$ truss -p 123
Follow the system calls used myapp
$ truss ./myapp -d /tmp -f 120
Same as above, but put the output into a file called /tmp/myapp.dbg
$ truss -o /tmp/truss.out ./myapp -d /tmp -f 120

strace under FreeBSD

You can install strace under FreeBSD and other *BSD like oses.

Further readings:

  • ktrace man page
  • truss man page

Download of the Day: OpenSSH Server 5.0 ( security fix release )

Posted on in Categories Data recovery, Howto, Linux, Networking, OpenBSD, Security, UNIX last updated April 8, 2008

OpenSSH Logo
One of the most popular remote server management service has just released security fix version. This version avoid possible hijacking of X11-forwarded connections by refusing to listen on a port unless all address families bind successfully. You can download OpenSHH Server from official project web site or wait for your distro to release updated version.

GCC Compiler 4.3.0 exposes a Linux / BSD kernel bug

Posted on in Categories FreeBSD, GNU/Open source, Linux, News, OpenBSD last updated March 19, 2008

Since version 4.3, gcc changed its behavior concerning the x86/x86-64 ABI and the direction flag, that is it now assumes that the direction flag is cleared at the entry of a function and it doesn’t clear once more if needed. According to LWN article GCC 4.3.0 exposes a kernel bug:

A change to GCC for a recent release coupled with a kernel bug has created a messy situation, with possible security implications. GCC changed some assumptions about x86 processor flags, in accordance with the ABI standard, that can lead to memory corruption for programs built with GCC 4.3.0. No one has come up with a way to exploit the flaw, at least yet, but it clearly is a problem that needs to be addressed.

=> GCC 4.3.0 exposes a kernel bug (via ./)

Chroot in OpenSSH / SFTP Feature Added To OpenSSH

Posted on in Categories Howto, Linux, Networking, OpenBSD, Security last updated February 20, 2008

For regular user accounts, a properly configured chroot jail is a rock solid security system. I’ve already written about chrooting sftp session using rssh. According to OpenBSD journal OpenSSH devs Damien Miller and Markus Friedl have recently added a chroot security feature to openssh itself:

Unfortunately, setting up a chroot(2) environment is complicated, fragile and annoying to maintain. The most frequent reason our users have given when asking for chroot support in sshd is so they can set up file servers that limit semi-trusted users to be able to access certain files only. Because of this, we have made this particular case very easy to configure.

This commit adds a chroot(2) facility to sshd, controlled by a new sshd_config(5) option “ChrootDirectory”. This can be used to “jail” users into a limited view of the filesystem, such as their home directory, rather than letting them see the full filesystem.

OpenSSH Tip: Check Syntax Errors before Restarting SSHD Server

Posted on in Categories Linux, Networking, OpenBSD, RedHat/Fedora Linux, Security, Sys admin, Tips, Troubleshooting, UNIX last updated June 17, 2017
OpenSSH - SSHD Logo

OOpenSSH (OpenBSD Secure Shell) is a default secure shell for encrypted communication sessions over a computer network using the ssh protocol. Usually, you log in using ssh and makes changes to its configuration file /etc/ssh/sshd_conf over a remote session. If there is an error in configuration, the server may not start (i.e. no remote login allowed). This will result in a disaster; if you didn’t have access to the remote console. But how do you find out a syntax error for the sshd_config file?
Continue reading “OpenSSH Tip: Check Syntax Errors before Restarting SSHD Server”

Print / Select a paper size other than A4 when using lp command line utility

Posted on in Categories CentOS, Debian Linux, Hardware, Howto, HP-UX, Linux, OpenBSD, Shell scripting, Suse Linux, Tuning, Ubuntu Linux, UNIX last updated December 21, 2007

Under Linux / UNIX you use lp command to print files from command prompt. lp is quite useful when GUI is not installed on Linux box to print files. The lp command is simply a front end command that calls the lpr command with appropriate options. Its main use is to allow the running of precompiled binary programs and scripts that assume that the lp command is the official printing command.

Changing papa size is very easy under GUI environment. But how do you change paper size under command prompt?
By default lp print to A4 paper size. However sometime you need to print to different paper size from command prompt such as A3 or A5. To print to A3 size, enter:
$ lp -o media=A3 /path/to/file

  • -o media=size : Sets the page size to size. Most printers support at least the size names “a4”, “letter”, and “legal”.

Other useful examples

Print a double-sided legal document to a printer called “hpljf2”:
$ lp -d hpljf2 -o media=legal -o sides=two-sided-long-edge /path/to/file
Print an image across 4 pages using a printer called “epd2”:
$ lp -d epd2 -o scaling=200 filename
Print a text file with 12 characters per inch, 8 lines per inch, and a 1 inch left margin to a printer called “lpodc2”:
$ lp -d lpodc2 -o cpi=12 -o lpi=8 -o page-left=72 ~/info.txt

To know more about lp option, enter:
$ man lp

Please note that you need to configure print using CUPS configuration file /etc/cups/cupsd.conf or web based tool located at http://localhost:631/
Linux / UNIX CUPS HP printer at http://localhost:631/
(Fig 01: My CUPS Configuration, showing HP PhotoSmart Printer )

Linux PDF editor for manipulating PDF documents

Posted on in Categories Download of the day, FreeBSD, Howto, Linux, Linux desktop, OpenBSD, OS X, UNIX, Windows last updated December 18, 2007

Adobe Acrobat is a commercial tool for manipulating PDF files. Earlier I was using CUPs – printing system, to export PDF files. I’ve also tried out gv for the same purpose. However, I needed complete editing of pdf documents. My search ended with PDFedit software, which is free and open source editor for manipulating PDF documents. The software available in both GUI and CLI (commandline) interface.

This software also supports scripting and almost anything can be scripted. PDFedit is a low-level tool for users. You can use this software:
=> To write / create / edit PDF files.
=> Print PDF files.
=> Save PDF files.
=> Export PDF files to XML etc.

Install PDFEdit

If you are using Debian or Ubuntu Linux, enter:
$ sudo apt-get install pdfedit

Start Editing PDF Files with PDFEdit editor

To start PDFEdit, type:
$ pdfedit /path/to/pdf.file &
$ pdfedit &

PDFEdit Linux freeware pdf writer software
( Fig 01: PDFedit ~ Linux PDF maker in action [click to enlarge the image] )

Other Linux pdf maker / writer software

During my research I came across other apps to edit PDFs. I hope you will find following tools useful:

=> scribus – Open Source Desktop Page Layout / desktop publishing (DTP) application software. It works under Linux, Mac and Windows computer. This software is another good alternative to PDFEdit. Just open file using open option and you can edit PDF file. You can install scribus using apt-get command:
$ sudo apt-get install scribus

To use scribus to edit PDF files:
Start scribus > New File > Insert > Image > Double click > Select PDF file

=> flpsed – a WYSIWYG pseudo PostScript editor. This software is very fast and light weight. To install flpsed, enter:
$ sudo apt-get install flpsed
To edit file, enter:
$ flpsed /path/to/pdf-file.pdf &

=> Gimp – I’ve also used gimp for editing pdf files. However, you need basic knowledge of gimp itself for editing pdf files. GIMP is almost installed on all Linux distribution. Please note that GIMP is not elegant solution for editing pdf files.

Online PDF manipulation tool

Finally, you can always use the Internet to modify PDF files using a web browser. [pdfescape.com]


PDFEdit is the best free open source software for for Linux / Unix-like operating systems. However, it does not support editing protected or encrypted PDF files.

Further readings:

Download of the day: OpenBSD 4.2 CD ISO Image

Posted on in Categories Download of the day, OpenBSD last updated November 1, 2007

OpenBSD 4.2 has been released and available for download. OpenBSD is famous for its focus on security. Today, November 1st, the team is proud to announce Release 4.2.

Even though security is still there, this release comes with some amazing performance improvements: basic benchmarks showed PF being twice as fast, a rewrite of the TLB shootdown code for i386 and amd64 cut the time to do a full package build by 20 percent (mostly because all the forks in configure scripts have become much cheaper), and the improved frequency scaling on MP systems can help save nearly 20 percent of battery power.

And then the new features: FFS2, support for the Advanced Host Controller Interface, IP balancing in CARP, layer 7 manipulation with hoststated, Xenocara, and more!

Download OpenBSD ISO

=> For greater convenience, the new 4.2 release also comes with roughly ~200MB full install ISO images called “install42.iso”. If you download this file, you do not need the other standard install files. Select

Also, Federico Biancuzzi interviewed 23 developers and assembled this huge interview…

Happy 8th Birthday, OpenSSH!

Posted on in Categories News, OpenBSD last updated September 27, 2007

OpenSSH is most prominent implementation of the SSH protocol. I can’t imagine my life without OpenSSH. Almost all of my devices / server / network equipment such as routers and tiny embedded device has OpenSSH these days.
Happy 8th Birthday, OpenSSH! - Logo
From OpenBSD journal:

Eight years ago today, Sept 26 1999, Theo de Raadt committed the initial source code for OpenSSH to the OpenBSD repository. The code was a fork of Björn Grönvall’s OSSH, which was derived from an early version of the increasingly “less free” ssh from Tatu Ylönen.