What is /proc/sysrq-trigger in linux and how to use sysrq kernel feature ?

SysRq or “System Request” also known as Magic Keys, which allows us to send some specific instructions directly to the Linux kernel.

This can be invoked by using a specific keyboard sequence(according to the system hardware) or by echoing letter commands to /proc/sysrq-trigger.

We need to make sure that sysrq functionality is enabled in order to use this feature.

Lets have a look how to use these magical keys.

Enable SysRq

To enable sysrq, we need to echo 1 to /proc/sys/kernel/sysrq file.

[root@nglinux crash]# echo 1 > /proc/sys/kernel/sysrq 
[root@nglinux crash]# 

Following are the options we can echo to this file.
0 – disable sysrq completely
1 – enable all functions of sysrq
>1 – bitmask to allow specific sysrq functions
2 = 0x2 – enable control of console logging level
4 = 0x4 – enable control of keyboard (SAK, unraw)
8 = 0x8 – enable debugging dumps of processes etc.
16 = 0x10 – enable sync command
32 = 0x20 – enable remount read-only
64 = 0x40 – enable signalling of processes (term, kill, oom-kill)
128 = 0x80 – allow reboot/poweroff
256 = 0x100 – allow nicing of all RT tasks

 

Using Different sysrq magic keys

1. Available options

Jul 12 00:40:53 localhost kernel: SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z) 

2. Power off the machine immediately.

[root@nglinux ~]# echo o > /proc/sysrq-trigger 

3. Crash the system

[root@nglinux crash]# echo c > /proc/sysrq-trigger

4. Viewing Help: By echoing some random character which has no impact on system.

[root@nglinux ~]# echo y > /proc/sysrq-trigger 
[root@nglinux ~]# 

### View the messages file to see the output of the command.
[root@nglinux ~]# tail /var/log/messages
Jul 11 21:43:28 localhost NetworkManager[1565]:  (eth1): carrier now ON (device state 8)
Jul 11 21:43:42 localhost NetworkManager[1565]:  (eth1): carrier now OFF (device state 8, deferring action for 4 seconds)
Jul 11 21:43:42 localhost kernel: e1000: eth1 NIC Link is Down
Jul 11 21:43:46 localhost kernel: e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jul 11 21:43:46 localhost NetworkManager[1565]:  (eth1): carrier now ON (device state 8)
Jul 11 21:44:40 localhost NetworkManager[1565]:  (eth1): carrier now OFF (device state 8, deferring action for 4 seconds)
Jul 11 21:44:40 localhost kernel: e1000: eth1 NIC Link is Down
Jul 11 21:44:42 localhost kernel: e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jul 11 21:44:42 localhost NetworkManager[1565]:  (eth1): carrier now ON (device state 8)
Jul 11 21:47:12 localhost kernel: SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z) 

5. Sync all filesystems

[root@nglinux ~]# echo s > /proc/sysrq-trigger 
[root@nglinux ~]# 

6. Re-mounts all filesystems read only

[root@nglinux ~]# echo u > /proc/sysrq-trigger 

[root@nglinux ~]# touch abc
touch: cannot touch `abc': Read-only file system
[root@nglinux ~]#

7. Kill High memory processes to recover OOM situation

[root@nglinux ~]# echo f > /proc/sysrq-trigger

Jul 11 22:07:23 localhost kernel: Out of memory: Kill process 2037 (mysqld) score 34 or sacrifice child
Jul 11 22:07:23 localhost kernel: Killed process 2037, UID 27, (mysqld) total-vm:335736kB, anon-rss:26904kB, file-rss:3712kB

8. Kill all processes except init

[root@nglinux ~]# echo f > /proc/sysrq-trigger
[root@nglinux ~]# 

### Output:


9. See all blocked state processes on our system.

[root@nglinux ~]# echo w > /proc/sysrq-trigger 
[root@nglinux ~]# 

Jul 12 00:11:08 localhost kernel: SysRq : Show Blocked State
Jul 12 00:11:08 localhost kernel:  task                PC stack   pid father
Jul 12 00:11:08 localhost kernel: Sched Debug Version: v0.09, 2.6.32-754.el6.i686 #1
Jul 12 00:11:08 localhost kernel: now at 5075394.388115 msecs
Jul 12 00:11:08 localhost kernel:  .jiffies                                 : 4775394
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_latency                    : 5.000000
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_min_granularity            : 1.000000
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_wakeup_granularity         : 1.000000
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_child_runs_first           : 0.000000
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_features                   : 7279
Jul 12 00:11:08 localhost kernel:  .sysctl_sched_tunable_scaling            : 1 (logaritmic)
Jul 12 00:11:08 localhost kernel: 
Jul 12 00:11:08 localhost kernel: cpu#0, 2693.764 MHz
Jul 12 00:11:08 localhost kernel:  .nr_running                    : 2
Jul 12 00:11:08 localhost kernel:  .load                          : 2048
Jul 12 00:11:08 localhost kernel:  .nr_switches                   : 244106
Jul 12 00:11:08 localhost kernel:  .nr_load_updates               : 50168
Jul 12 00:11:08 localhost kernel:  .nr_uninterruptible            : 0
Jul 12 00:11:08 localhost kernel:  .next_balance                  : 4.775427
Jul 12 00:11:08 localhost kernel:  .curr->pid                     : 3898
Jul 12 00:11:08 localhost kernel:  .clock                         : 9044243.494162
Jul 12 00:11:08 localhost kernel:  .cpu_load[0]                   : 0
Jul 12 00:11:08 localhost kernel:  .cpu_load[1]                   : 0
Jul 12 00:11:08 localhost kernel:  .cpu_load[2]                   : 0
Jul 12 00:11:08 localhost kernel:  .cpu_load[3]                   : 0
Jul 12 00:11:08 localhost kernel:  .cpu_load[4]                   : 0
Jul 12 00:11:08 localhost kernel:  .yld_count                     : 3
Jul 12 00:11:08 localhost kernel:  .sched_switch                  : 0
Jul 12 00:11:08 localhost kernel:  .sched_count                   : 245424
Jul 12 00:11:08 localhost kernel:  .sched_goidle                  : 51895
Jul 12 00:11:08 localhost kernel:  .avg_idle                      : 979791
Jul 12 00:11:08 localhost kernel:  .ttwu_count                    : 176590
Jul 12 00:11:08 localhost kernel:  .ttwu_local                    : 176590
Jul 12 00:11:08 localhost kernel:  .bkl_count                     : 324
Jul 12 00:11:08 localhost kernel: 
Jul 12 00:11:08 localhost kernel: cfs_rq[0]:/
Jul 12 00:11:08 localhost kernel:  .exec_clock                    : 25245.714291
Jul 12 00:11:08 localhost kernel:  .MIN_vruntime                  : 22133.515042
Jul 12 00:11:08 localhost kernel:  .min_vruntime                  : 22133.515042
Jul 12 00:11:08 localhost kernel:  .max_vruntime                  : 22133.515042
Jul 12 00:11:08 localhost kernel:  .spread                        : 0.000000
Jul 12 00:11:08 localhost kernel:  .spread0                       : 0.000000
Jul 12 00:11:08 localhost kernel:  .nr_spread_over                : 3735
Jul 12 00:11:08 localhost kernel:  .nr_running                    : 2
Jul 12 00:11:08 localhost kernel:  .load                          : 2048
Jul 12 00:11:08 localhost kernel:  .throttled                     : 0
Jul 12 00:11:08 localhost kernel:  .throttle_count                : 0
Jul 12 00:11:08 localhost kernel:  .load_avg                      : 0.000000
Jul 12 00:11:08 localhost kernel:  .load_period                   : 0.000000
Jul 12 00:11:08 localhost kernel:  .load_contrib                  : 0
Jul 12 00:11:08 localhost kernel:  .load_tg                       : 0
Jul 12 00:11:08 localhost kernel: 
Jul 12 00:11:08 localhost kernel: rt_rq[0]:/
Jul 12 00:11:08 localhost kernel:  .rt_nr_running                 : 0
Jul 12 00:11:08 localhost kernel:  .rt_throttled                  : 0
Jul 12 00:11:08 localhost kernel:  .rt_time                       : 0.000000
Jul 12 00:11:08 localhost kernel:  .rt_runtime                    : 950.000000
Jul 12 00:11:08 localhost kernel: 
Jul 12 00:11:08 localhost kernel: runnable tasks:
Jul 12 00:11:08 localhost kernel:            task   PID         tree-key  switches  prio     exec-runtime         sum-exec        sum-sleep
Jul 12 00:11:08 localhost kernel: ----------------------------------------------------------------------------------------------------------
Jul 12 00:11:08 localhost kernel:        events/0     7     22133.515042     10961   120     22133.515042      1599.376275   5073538.885707 /
Jul 12 00:11:08 localhost kernel: R           bash  3898     22131.188707        76   120     22131.188707        45.901986     99140.785267 /
Jul 12 00:11:08 localhost kernel: 

Leave a Reply

avatar
  Subscribe  
Notify of