Baby Chaos Monkeys for Linux

Written by Nick Otter.

Contents

Introduction

I’m not sure if these are really chaos monkeys but I’ve found these commands useful to test stuff. Here’s the (growing) list. I add to it when I remember. Collaborators, complaints and pull requests welcome. Most of these are just terminal commands, but that might change in future.

Requirements

Linux RHEL 8 4.18

Kernel

How to cause a kernel panic

$ echo 1 > /proc/sys/kernel/sysrq
$ echo c > /proc/sysrq-trigger

Memory

How to cause a segfault

Taken from Joey Adams on this thread. Bye bye!

$ kill -11 $$

CPU

How to max out CPU as quickly as possible

Do you want to repeatedly write a string to STDOUT without any output constraints to give your CPU an eternal workout?

$ yes > /dev/null

Network

How to send an incorrect TCP checksum

Hello Netcat. Start a netcat listener on the receiver machine on your desired port. Then let’s send something over TCP.

$ (i=0; while true; do echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $i; i=$((i+1)); sleep 1; done) | netcat IP PORT

In my case this was happening over the /dev/eth0 network interface. But switch where appropriate. This should do it!

$ sudo tc qdisc add dev eth0 root netem corrupt 100%; sleep 10; sudo tc qdisc del dev eth0 root netem

Filesystem

How to corrupt a filesystem

Let’s do some random block writes to a partition, bypassing the volume’s filesystem, this will mess it up even with journaling enabled.

$ sudo dd if=/dev/zero of=/partition bs=1k seek=10 count=4k

How to orphan some inodes

$ touch home && tail -f home &

Then…

$ bash -c `rm home; bash`

:’(


Thanks. This was written by Nick Otter.