Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SMARTD(8)		    SMART Monitoring Tools		     SMARTD(8)

       smartd -	SMART Disk Monitoring Daemon

       smartd [options]

       [This  man  page	is generated for the FreeBSD version of	smartmontools.
       It does not contain info	specific to other platforms.]

       smartd is a daemon that monitors	the Self-Monitoring, Analysis and  Re-
       porting Technology (SMART) system built into most ATA/SATA and SCSI/SAS
       hard drives and solid-state drives.  The	purpose	of SMART is to monitor
       the  reliability	 of  the hard drive and	predict	drive failures,	and to
       carry out different types of drive self-tests.  This version of	smartd
       is  compatible  with  ACS-3,  ACS-2,  ATA8-ACS, ATA/ATAPI-7 and earlier
       standards (see REFERENCES below).

       smartd will attempt to enable SMART monitoring on ATA devices  (equiva-
       lent  to	smartctl -s on)	and polls these	and SCSI devices every 30 min-
       utes (configurable), logging SMART errors  and  changes	of  SMART  At-
       tributes	via the	SYSLOG interface.  The default location	for these SYS-
       LOG  notifications  and	 warnings   is	 system-dependent   (typically
       /var/log/messages  or  /var/log/syslog).	  To change this default loca-
       tion, please see	the '-l' command-line option described below.

       In addition to logging to a file, smartd	can also be configured to send
       email  warnings	if  problems are detected.  Depending upon the type of
       problem,	you may	want to	run self-tests on the disk, back up the	 disk,
       replace the disk, or use	a manufacturer's utility to force reallocation
       of bad or unreadable disk sectors.   If	disk  problems	are  detected,
       please  see the smartctl	manual page and	the smartmontools web page/FAQ
       for further guidance.

       If you send a USR1 signal to smartd it will immediately check the  sta-
       tus  of	the  disks, and	then return to polling the disks every 30 min-
       utes. See the '-i' option below for additional details.

       smartd can be configured	 at  start-up  using  the  configuration  file
       /usr/local/etc/smartd.conf  (Windows: EXEDIR/smartd.conf).  If the con-
       figuration file is subsequently modified, smartd	can be told to re-read
       the configuration file by sending it a HUP signal, for example with the
       killall -HUP smartd.

       On startup, if smartd finds a syntax error in the  configuration	 file,
       it  will	print an error message and then	exit. However if smartd	is al-
       ready running, then is told with	a HUP signal to	re-read	the configura-
       tion  file, and then find a syntax error	in this	file, it will print an
       error message and then continue,	ignoring the contents of the  (faulty)
       configuration file, as if the HUP signal	had never been received.

       When  smartd  is	running	in debug mode, the INT signal (normally	gener-
       ated from a shell with CONTROL-C) is treated in the same	way as	a  HUP
       signal:	it  makes smartd reload	its configuration file.	To exit	smartd
       use CONTROL-\

       On  startup,  in	 the  absence  of  the	configuration  file   /usr/lo-
       cal/etc/smartd.conf, the	smartd daemon first scans for all devices that
       support SMART.  The scanning is done as follows:

       FREEBSD:	Authoritative list of disk devices is obtained from SCSI (CAM)
		and ATA	subsystems.  Disks behind RAID controllers are not in-

       smartd then monitors for	all possible SMART  errors  (corresponding  to
       the  '-a'  Directive  in	the configuration file;	see the	smartd.conf(5)
       man page).

       -A PREFIX, --attributelog=PREFIX
	      Writes smartd attribute information (normalized and  raw	attri-
	      bute  values)  to	 files 'PREFIX''MODEL-SERIAL.ata.csv' or 'PRE-
	      FIX''VENDOR-MODEL-SERIAL.scsi.csv'.  At  each  check  cycle  at-
	      tributes are logged as a line of semicolon separated triplets of
	      the    form    "attribute-ID;attribute-norm-value;attribute-raw-
	      value;".	 For  SCSI  devices  error  counters  and  temperature
	      recorded in the form "counter-name;counter-value;" Each line  is
	      led by a date string of the form "yyyy-mm-dd HH:MM:SS" (in UTC).

	      MODEL  and SERIAL	are build from drive identify information, in-
	      valid characters are replaced by underline.

	      If   the	 PREFIX	   has	  the	 form	 '/path/dir/'	 (e.g.
	      '/var/lib/smartd/'),  then files 'MODEL-SERIAL.ata.csv' are cre-
	      ated in directory	'/path/dir'.   If  the	PREFIX	has  the  form
	      '/path/name' (e.g. '/var/lib/misc/attrlog-'), then files 'nameM-
	      ODEL-SERIAL.ata.csv' are created	in  directory  '/path/'.   The
	      path must	be absolute, except if debug mode is enabled.

       -B [+]FILE, --drivedb=[+]FILE
	      [ATA  only] Read the drive database from FILE.  The new database
	      replaces the built in database by	default.  If '+' is specified,
	      then  the	 new entries prepend the built in entries.  Please see
	      the smartctl(8) man page for further details.

       -c FILE,	--configfile=FILE
	      Read smartd configuration	Directives from	FILE, instead of  from
	      the   default   location	 /usr/local/etc/smartd.conf  (Windows:
	      EXEDIR/smartd.conf).  If FILE does not exist, then  smartd  will
	      print  an	error message and exit with nonzero status.  Thus, '-c
	      /usr/local/etc/smartd.conf' can be used to verify	the  existence
	      of the default configuration file.

	      By  using	 '-' for FILE, the configuration is read from standard
	      input. This is useful for	commands like:
	      echo /dev/sdb -m user@home -M test | smartd -c - -q onecheck
	      to perform quick and simple checks without a configuration file.

       -d, --debug
	      Runs smartd in "debug" mode. In this mode,  it  displays	status
	      information  to STDOUT rather than logging it to SYSLOG and does
	      not fork(2) into the background and detach from the  controlling
	      terminal.	  In this mode,	smartd also prints more	verbose	infor-
	      mation about what	it is doing than when  operating  in  "daemon"
	      mode.  In	 this  mode, the INT signal (normally generated	from a
	      terminal with CONTROL-C) makes smartd reload  its	 configuration
	      file.  Please use	CONTROL-\ to exit

       -D, --showdirectives
	      Prints  a	 list (to STDOUT) of all the possible Directives which
	      may appear in the	configuration file /usr/local/etc/smartd.conf,
	      and   then   exits.   These  Directives  are  described  in  the
	      smartd.conf(5) man page.	They may appear	in  the	 configuration
	      file following the device	name.

       -h, --help, --usage
	      Prints usage message to STDOUT and exits.

       -i N, --interval=N
	      Sets the interval	between	disk checks to N seconds, where	N is a
	      decimal integer.	The minimum allowed value is ten and the maxi-
	      mum  is  the largest positive integer that can be	represented on
	      your system (often 2^31-1).  The default is 1800 seconds.

	      Note that	the superuser can make smartd check the	status of  the
	      disks  at	any time by sending it the SIGUSR1 signal, for example
	      with the command:
	      kill -SIGUSR1 <pid>
	      where <pid> is the process id number of smartd.	One  may  also
	      killall -USR1 smartd
	      for the same purpose.

       -l FACILITY, --logfacility=FACILITY
	      Uses  syslog  facility FACILITY to log the messages from smartd.
	      Here FACILITY is one of local0, local1, ..., local7,  or	daemon
	      [default].  If this command-line option is not used, then	by de-
	      fault messages from smartd are logged to the facility daemon.

	      If you would like	to have	smartd messages	logged somewhere other
	      than  the	default	location, include (for example)	'-l local3' in
	      its start	up argument list.  Tell	the syslog daemon to  log  all
	      messages	  from	  facility    local3	to    (for    example)

	      For more detailed	information, please refer to the man pages for
	      the  local  syslog daemon, typically syslogd(8), syslog-ng(8) or

       -n, --no-fork
	      Do not fork into background; this	is useful when	executed  from
	      modern init methods like initng, minit, supervise	or systemd.

       -p NAME,	--pidfile=NAME
	      Writes  pidfile  NAME  containing	 the  smartd Process ID	number
	      (PID).  To avoid symlink attacks	make  sure  the	 directory  to
	      which  pidfile  is  written  is only writable for	root.  Without
	      this option, or if the --debug option is given, no PID  file  is
	      written  on startup.  If smartd is killed	with a maskable	signal
	      then the pidfile is removed.

       -q WHEN,	--quit=WHEN
	      Specifies	when, if ever, smartd should exit.   The  valid	 argu-
	      ments are	to this	option are:

	      nodev  -	Exit if	there are no devices to	monitor, or if any er-
	      rors are found at	startup	in the configuration  file.   This  is
	      the default.

	      errors  -	Exit if	there are no devices to	monitor, or if any er-
	      rors   are   found   in	the   configuration   file    /usr/lo-
	      cal/etc/smartd.conf at startup or	whenever it is reloaded.

	      nodevstartup  -  Exit  if	 there	are  no	 devices to monitor at
	      startup.	But continue to	run if no devices are  found  whenever
	      the configuration	file is	reloaded.

	      never  -	Only exit if a fatal error occurs (no remaining	system
	      memory, invalid command line arguments). In this mode,  even  if
	      there  are  no  devices to monitor, or if	the configuration file
	      /usr/local/etc/smartd.conf has errors, smartd will  continue  to
	      run, waiting to load a configuration file	listing	valid devices.

	      onecheck	-  Start  smartd in debug mode,	then register devices,
	      then check device's SMART	status once, and then exit  with  zero
	      exit status if all of these steps	worked correctly.

	      This last	option is intended for 'distribution-writers' who want
	      to create	automated scripts to determine whether or not to auto-
	      matically	start up smartd	after installing smartmontools.	 After
	      starting smartd with this	 command-line  option,	the  distribu-
	      tion's  install  scripts should wait a reasonable	length of time
	      (say ten seconds).  If smartd has	not exited with	zero status by
	      that  time,  the	script should send smartd a SIGTERM or SIGKILL
	      and assume that smartd will not operate correctly	on  the	 host.
	      Conversely, if smartd exits with zero status, then it is safe to
	      run smartd in normal daemon mode.	If smartd is unable to monitor
	      any  devices  or	encounters  other problems then	it will	return
	      with non-zero exit status.

	      showtests	- Start	smartd in debug	mode, then  register  devices,
	      then  write a list of future scheduled self tests	to stdout, and
	      then exit	with zero exit status if all  of  these	 steps	worked
	      correctly.  Device's SMART status	is not checked.

	      This  option  is	intended to test whether the '-s REGEX'	direc-
	      tives in smartd.conf will	have the desired  effect.  The	output
	      lists  the  next test schedules, limited to 5 tests per type and
	      device. This is followed by a summary of all tests of  each  de-
	      vice within the next 90 days.

       -r TYPE,	--report=TYPE
	      Intended	primarily  to help smartmontools developers understand
	      the behavior of smartmontools on non-conforming  or  poorly-con-
	      forming  hardware.  This option reports details of smartd	trans-
	      actions with the device.	The option can be used multiple	times.
	      When  used  just once, it	shows a	record of the ioctl() transac-
	      tions with the device.  When used	more than once,	the detail  of
	      these  ioctl() transactions are reported in greater detail.  The
	      valid arguments to this option are:

	      ioctl - report all ioctl() transactions.

	      ataioctl - report	only ioctl() transactions with ATA devices.

	      scsiioctl	- report only ioctl() transactions with	SCSI devices.

	      nvmeioctl	- [FreeBSD, Linux, Windows and Cygwin only]  [NEW  EX-
	      PERIMENTAL SMARTD	FEATURE] report	only ioctl() transactions with
	      NVMe devices.

	      Any argument may include a positive integer to specify the level
	      of  detail that should be	reported.  The argument	should be fol-
	      lowed by a comma then the	integer	with no	spaces.	 For  example,
	      ataioctl,2  The  default	level is 1, so '-r ataioctl,1' and '-r
	      ataioctl'	are equivalent.

       -s PREFIX, --savestates=PREFIX
	      Reads/writes  smartd  state  information	from/to	 files	 'PRE-
	      FIX''MODEL-SERIAL.ata.state'     or    'PREFIX''VENDOR-MODEL-SE-
	      RIAL.scsi.state'.	 This preserves	SMART  attributes,  drive  min
	      and  max temperatures (-W	directive), info about last sent warn-
	      ing email	(-m directive),	and the	time  of  next	check  of  the
	      self-test	REGEXP (-s directive) across boot cycles.

	      MODEL  and SERIAL	are build from drive identify information, in-
	      valid characters are replaced by underline.

	      If   the	 PREFIX	   has	  the	 form	 '/path/dir/'	 (e.g.
	      '/var/lib/smartd/'),  then  files	 'MODEL-SERIAL.ata.state'  are
	      created in directory '/path/dir'.	 If the	PREFIX	has  the  form
	      '/path/name' (e.g. '/var/lib/misc/smartd-'), then	files 'nameMO-
	      DEL-SERIAL.ata.state' are	created	in  directory  '/path/'.   The
	      path must	be absolute, except if debug mode is enabled.

	      The  state  information  files  are  read	on smartd startup. The
	      files are	always (re)written  after  reading  the	 configuration
	      file,  before  rereading the configuration file (SIGHUP),	before
	      smartd shutdown, and after a check forced	by  SIGUSR1.  After  a
	      normal  check  cycle,  a	file is	only rewritten if an important
	      change (which usually results in a SYSLOG	output)	occurred.

       -w PATH,	--warnexec=PATH
	      Run the executable PATH  instead	of  the	 default  script  when
	      smartd  needs  to	 send warning messages.	 PATH must point to an
	      executable  binary  file	or  script.   The  default  script  is

       -V, --version, --license, --copyright
	      Prints  version,	copyright, license, home page and SVN revision
	      information for your copy	of smartd to STDOUT  and  then	exits.
	      Please  include  this  information  if you are reporting bugs or

       Runs the	daemon in forked mode. This is the normal way to  run  smartd.
       Entries are logged to SYSLOG.

       smartd -d -i 30
       Run  in foreground (debug) mode,	checking the disk status every 30 sec-

       smartd -q onecheck
       Registers devices, and checks the status	of the devices	exactly	 once.
       The exit	status (the shell $?  variable)	will be	zero if	all went well,
       and nonzero if no devices were detected or some other problem  was  en-

       Note   that  smartmontools  provides  a	start-up  script  in  /usr/lo-
       cal/etc/rc.d/smartd which is responsible	for starting and stopping  the
       daemon via the normal init interface.  Using this script, you can start
       smartd by giving	the command:
       /usr/local/etc/rc.d/smartd start
       and stop	it by using the	command:
       /usr/local/etc/rc.d/smartd stop

       The syntax of the smartd.conf(5)	file is	discussed separately.

       smartd will make	log entries at loglevel	 LOG_INFO  if  the  Normalized
       SMART  Attribute	values have changed, as	reported using the '-t', '-p',
       or '-u' Directives. For example:
       'Device:	/dev/sda, SMART	Attribute: 194 Temperature_Celsius changed from	94 to 93'
       Note that in this message, the value given is the 'Normalized' not  the
       'Raw'  Attribute	 value	(the disk temperature in this case is about 22
       Celsius).  The '-R' and '-r' Directives modify this behavior,  so  that
       the information is printed with the Raw values as well, for example:
       'Device:	/dev/sda, SMART	Attribute: 194 Temperature_Celsius changed from	94 [Raw	22] to 93 [Raw 23]'
       Here  the  Raw values are the actual disk temperatures in Celsius.  The
       way in which the	Raw values are printed,	and the	names under which  the
       Attributes  are	reported,  is governed by the various '-v Num,Descrip-
       tion' Directives	described previously.

       Please see the smartctl manual page for further explanation of the dif-
       ferences	between	Normalized and Raw Attribute values.

       smartd  will make log entries at	loglevel LOG_CRIT if a SMART Attribute
       has failed, for example:
       'Device:	/dev/sdc, Failed SMART Attribute: 5 Reallocated_Sector_Ct'
	This loglevel  is  used	 for  reporting	 enabled  by  the  '-H',  -f',
       '-l selftest',  and '-l error' Directives. Entries reporting failure of
       SMART Prefailure	Attributes should not be ignored: they mean  that  the
       disk is failing.	 Use the smartctl utility to investigate.

       When smartd makes log entries, these are	time-stamped.  The time	stamps
       are in the computer's local time	zone, which is generally set using ei-
       ther  the  environment  variable	'TZ' or	using a	time-zone file such as
       /etc/localtime.	You may	wish to	change the timezone  while  smartd  is
       running	(for  example,	if  you	 carry a laptop	to a new time-zone and
       don't reboot it).  Due to a bug in the tzset(3) function	of  many  unix
       standard	 C libraries, the time-zone stamps of smartd might not change.
       For some	systems, smartd	will work around this problem if the time-zone
       is  set using /etc/localtime. The work-around fails if the time-zone is
       set using the 'TZ' variable (or a file that it points to).

       The exit	status (return value) of smartd	can have the following values:

       0:     Daemon startup successful, or smartd was killed by a SIGTERM (or
	      in debug mode, a SIGQUIT).

       1:     Commandline did not parse.

       2:     There was	a syntax error in the config file.

       3:     Forking the daemon failed.

       4:     Couldn't create PID file.

       5:     Config  file  does  not exist (only returned in conjunction with
	      the '-c' option).

       6:     Config file exists, but cannot be	read.

       8:     smartd ran out of	memory during startup.

       10:    An inconsistency was found in smartd's internal data structures.
	      This  should never happen.  It must be due to either a coding or
	      compiler bug.  Please report such	failures to smartmontools  de-
	      velopers,	see REPORTING BUGS below.

       16:    A	 device	 explicitly listed in /usr/local/etc/smartd.conf can't
	      be monitored.

       17:    smartd didn't find any devices to	monitor.

       254:   When in daemon mode, smartd received a SIGINT or SIGQUIT.	 (Note
	      that  in	debug  mode, SIGINT has	the same effect	as SIGHUP, and
	      makes smartd reload its configuration file. SIGQUIT has the same
	      effect  as SIGTERM and causes smartd to exit with	zero exit sta-

       132 and above
	      smartd was killed	by a signal  that  is  not  explicitly	listed
	      above.  The exit status is then 128 plus the signal number.  For
	      example if smartd	is killed by SIGKILL (signal 9)	then the  exit
	      status is	137.

	      full path	of this	executable.

	      configuration file (see smartd.conf(5) man page).

	      script   run   on	  warnings   (see   '-M	  exec'	 directive  on
	      smartd.conf(5) man page).

	      plugin directory for smartd warning script (see  '-m'  directive
	      on smartd.conf(5)	man page).

	      drive database (see '-B' option).

	      optional local drive database (see '-B' option).

       Bruce Allen (project initiator),
       Christian  Franke  (project  manager,  Windows  port  and  all  sort of
       Douglas Gilbert (SCSI subsystem),
       Volker Kuhlmann (moderator of support and database mailing list),
       Gabriele	Pohl (wiki & development team support),
       Alex Samorukov (FreeBSD port and	more, new Trac wiki).

       Many other individuals have made	contributions and corrections, see AU-
       THORS, ChangeLog	and repository files.

       The  first  smartmontools code was derived from the smartsuite package,
       written by Michael Cornwell and Andre Hedrick.

       To submit a bug report, create a	ticket in smartmontools	wiki:
       Alternatively send the info to the smartmontools	support	mailing	list:

       smartd.conf(5), smartctl(8).

       Please see the following	web site for more  info:  http://www.smartmon-

       An  introductory	 article  about	smartmontools is Monitoring Hard Disks
       with SMART, by Bruce Allen, Linux Journal, January 2004,	 pages	74-77.
       This is	online.

       If  you	would  like  to	understand better how SMART works, and what it
       does, a good place to start is with Sections 4.8	and 6.54 of the	 first
       volume  of  the	'AT  Attachment	with Packet Interface-7' (ATA/ATAPI-7)
       specification Revision 4b.   This  documents  the  SMART	 functionality
       which the smartmontools utilities provide access	to.

       The  functioning	of SMART was originally	defined	by the SFF-8035i revi-
       sion 2 and the SFF-8055i	revision 1.4 specifications.  These are	publi-
       cations of the Small Form Factors (SFF) Committee.

       Links  to  these	 and other documents may be found on the Links page of
       the smartmontools Wiki at .

       smartmontools-6.5 2016-05-07 r4318
       $Id:	4299 2016-04-16	19:45:57Z chrfranke $

smartmontools-6.5		  2016-05-07			     SMARTD(8)


Want to link to this manual page? Use this URL:

home | help