xsession-errors
Ever since I upgraded my notebook with a SSD, I was looking for a way to minimise or avoid unnecessary write accesses. The tools of choice (on Linux at least) are iostat
for a rough summary and pidstat
for the details. With the help of those two one can easily figure out which processes are responsible for write accesses.
Once a writing process is identified, lsof
can tell you which files are actually written. Depending on what you want to achieve, you can then continue to relocate that file to a different disk (e.g. if you have two disks and want one of them to sleep most of the time) or to memory (using tmpfs). The latter obviously means that the written data will be lost at the next reboot, but sometimes this is perfectly fine e.g. for the files inside /tmp
. Therefore, it is generally a good idea to move that directory into volatile memory following the instructions on the openSUSE Wiki.
All good and well if you actually manage to relocate or move a file. Often file locations are a matter of configuration and otherwise you can help yourself with dynamic links. But there was one very special file on my openSUSE 11.4 installation that withstood all my assaults for quiet some time. I’m speaking of a beast called .xsession-errors
residing in your $HOME
directory. Created by KDM, one would expect to be able to configure the location of that file. Indeed, there is a configuration option called ClientLogFile
specifically for that purpose. Unfortunately this is only the first and easier of two necessary steps:
- As
root
open your/usr/share/kde4/config/kdm/kdmrc
, go to a section labelled[X-:0-Core]
(there may be multiple of those, but don’t worry and just pick the last one) and add the following line:ClientLogFile=../../tmp/xsession-errors-%u
This will move the file into the
/tmp
directory. Mind the path relative to$HOME
. - Now the hidden piece: again as
root
open your/etc/X11/xdm/Xsession
and make the following changes (I deliberately use thepatch
syntax here i.e. remove lines with a minus sign and add those with a plus sign):--- Xsession.old 2011-05-01 19:46:40.000000000 +0200 +++ Xsession 2011-05-02 22:18:39.000000000 +0200 @@ -123,8 +123,8 @@ # GDM seems to handle this its self test -z "$GDMSESSION" || break - # Once if KDM does handle this its self - #test -z "$KDMSESSION" || break + # KDM handles this itself + test -z "$KDE_SESSION_VERSION" || break # Avoid bad symbolic links case "$errfile" in
Done; logout, restart KDM, re-login and check if the xsession-errors*
exists at the new location. If so, remove your old one and cheer to a long living SSD. Only, of course, if the new location is not on your SSD, but e.g. in memory. It doesn’t hurt to re-check with pidstat
.