How to Monitor the Status of Linux Server

  • 2021-08-12 04:13:11
  • OfStack

We deal with Linux servers every day, especially Linux engineers. In order to ensure the security and performance of the server, we often need to monitor the status of the server to ensure that the work can be carried out smoothly.

Several commands introduced in this article are not only suitable for server monitoring, but also suitable for our daily development.

1. watch

We use watch command very frequently, and its basic function is to repeat one instruction according to the specified frequency. Using this command, we can repeatedly call 1 command to achieve the role of monitoring server.

By default, the execution cycle of the watch command is 2 seconds, but we can use the -n Option to specify the running frequency. For example, if we want to execute the date command every 5 seconds, we can do this:

$ watch -n 5 date

There must be many people using a server, especially the small partners in this department. For these friends to fish in troubled waters, we can use 1 command to monitor them.

We can execute the who command every 10 seconds to see who is using the server.


$ watch -n 10 who
Every 10.0s: who    butterfly: Tue Jan 23 16:02:03 2019

shs :0  2019-01-23 09:45 (:0)
dory pts/0 2019-01-23 15:50 (192.168.0.5)
alvin pts/1 2019-01-23 16:01 (192.168.0.15)
shark pts/3 2019-01-23 11:11 (192.168.0.27)

If we find that the system is running slowly, we can call uptime command to check the average load of the system.


$ watch uptime
Every 2.0s: uptime    butterfly: Tue Jan 23 16:25:48 2019

 16:25:48 up 22 days, 4:38, 3 users, load average: 1.15, 0.89, 1.02

1 Some key processes must not hang, otherwise it may affect business development, so we can repeatedly count the number of all processes in the server.


$ watch -n 5 'ps -ef | wc -l'
Every 5.0s: ps -ef | wc -l   butterfly: Tue Jan 23 16:11:54 2019

245

To know the server memory usage dynamically, you can repeat the free command.


$ watch -n 5 free -m
Every 5.0s: free -m    butterfly: Tue Jan 23 16:34:09 2019

  total used free shared buff/cache available
Mem:  5959  776 3276  12 1906 4878
Swap:  2047  0 2047

Not only that, of course, but we can also call many commands repeatedly to monitor some key parameters of Server 1.

2. top

Using top command, we can know many key parameters of the system, and it is dynamically updated. By default, top monitors the overall state of the system. If we only want to know the usage of someone, we can use -u Option to specify this person.


$ top -u alvin
top - 16:14:33 up 2 days, 4:27, 3 users, load average: 0.00, 0.01, 0.02
Tasks: 199 total, 1 running, 198 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 5959.4 total, 3277.3 free, 776.4 used, 1905.8 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 4878.4 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23026 alvin 20 0 46340 7820 6504 S 0.0 0.1 0:00.05 systemd
23033 alvin 20 0 149660 3140 72 S 0.0 0.1 0:00.00 (sd-pam)
23125 alvin 20 0 63396 5100 4092 S 0.0 0.1 0:00.00 sshd
23128 alvin 20 0 16836 5636 4284 S 0.0 0.1 0:00.03 zsh

In this result, you can see not only the total number of processes run by alvin, but also the system resources consumed by each process (CPU, memory), and still the key parameters of the whole system.

3. ac

If you want to know how long it takes each user to log on to the server, you can use the ac command. This command requires you to install acct Package (Debian) or psacct Packages (RHEL, Centos).

If we want to know the sum of the time it takes for all users to log on to the server, we can run the ac command without any parameters.

$ ac
total 1261.72

If we want to know the time spent by each user, we can add -p Option.


$ ac -p
 shark    5.24
 alvin    5.52
 shs    1251.00
 total 1261.76

We can also add -d Option to view the sum of the time users use the server every 1 day.


$ ac -d | tail -10
Jan 11 total 0.05
Jan 12 total 1.36
Jan 13 total 16.39
Jan 15 total 55.33
Jan 16 total 38.02
Jan 17 total 28.51
Jan 19 total 48.66
Jan 20 total 1.37
Jan 22 total 23.48
Today total 9.83

Summary

We can use many commands to monitor the running status of the system. This paper mainly introduces three: watch command allows you to repeatedly execute a certain command to monitor the changes of some parameters, top command can view the number of processes run by a certain user and the resources consumed, and ac command can view the time when each user uses the server.


Related articles: