Linux Servers are something we deal with every day, especially Linux engineers. In order to ensure the security and performance of the server, we often need to monitor some of the server's status to ensure that our work can run smoothly.
This article describes a few commands that apply not only to server monitoring, but also to development in our everyday situations.
1. watch
The watch command is used very frequently. Its basic purpose is to repeat a command at a specified frequency. With this command, we can repeatedly call some commands to monitor the server.
By default, the watch command is executed in 2-second intervals, but we can use the -n option to specify how often it should be run. For example, if we want to execute the date command every 5 seconds, we can do it this way:
$ watch -n 5 date
A server must be used by more than one person, especially the peeps in this department. There are some commands that we can use to monitor these guys to see if they are muddying the waters.
We can run 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 invoke the uptime command to see the average system load.
$ 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
Some critical processes must not hang, otherwise it may affect the business, so we can repeat the count of all the 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
Of course it's not just that, there are many commands that we can repeatedly call to monitor some key parameters of the server.
2. top
Using the top command we can know many key parameters of the system, and they are dynamically updated. By default, top monitors the overall state of the system. If we only want to know the usage of a certain person, we can specify that person using the -u option.
$ 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 number of processes run by the user alvin, but also the amount of system resources (CPU, memory) consumed by each process, as well as the key parameters of the whole system.
3. ac
If you want to know the time used by each user to log on to the server, you can use the ac command. This command requires that you install the acct package (Debian) or the psacct package (RHEL.Centos)。
If we want to know the sum of the time used by all users to log on to the server, we can just run the ac command without any arguments.
$ ac
total 1261.72
If we want to know the time used by individual users, we can add the -p option.
$ ac -p
shark 5.24
alvin 5.52
shs 1251.00
total 1261.76
We can also add the -d option to see the sum of the server time for each specific day of user usage.
$ 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
wrap-up
There are a number of commands that we can use to monitor the status of the system, and this article introduces three of them: the watch command allows you to repeat a command to monitor the changes of some parameters, the top command allows you to view the number of processes running and the resources consumed by a user, and the ac command allows you to view the server time used by each user. Which command do you use more often? Feel free to leave a comment!