Monday, March 28, 2022
In Linux you can control the priority of a process with the commands nice and renice. There are limitations if you are a non-root user. The nice and renice commands have the values in the range of -20 to +19. The higher the numbers the higher the priority, or the nicer the process is meaning the less CPU it would use, so it's kind of the opposite of what you are thinking. So it's like nice guys finished last?
So if we run the sleep process again let's see what happens by default
sleep 1500&
As you can see the priority(PRI) is set to 80 percent by default
Now let's be a nice guy and assign the sleep process to the nicest value -19
As you can see the new sleep process is set to priority 99 meaning only run the process if processes with the a lower number is ran first. It's like being the 99th person in line.
If you run it at the highest nice value, not so nice. Let's see what happens
You can also reassign the priority of an existing process with renice command, with the renice command you have to specify the process id
Linux was nice enough to tell you that the process has been changed from priority of 19 to 5, so now the process is assigned a priority value of 85. Still the nicest priority!
The caveat on the renice command is that if you are not a user with root privileges, you cannot set a higher priority than the original priority of a process.
If you are root you can also control other user's priority settings by editing the /etc/security/limits.conf. Priority is the last item or settings that you can set limits on, so move to the end of the line and type in the following for user limit, if you want group limits you just prefix it with the @ sign
Now the next time techjunkie sets a priority he will be limited to priority number 5 nice value. Since he is not a root user he cannot renice the process to be anything higher than 5. Therefore he is a pretty nice guy.
Monday, March 21, 2022
Linux allows you to run jobs in the background and in the foreground. It accomplish this by identifying the processes as jobs and assigning the state to the jobs by numbers.
First let's create a process, we are just create a sleep job in the background, with the command sleep 1500& the & automatically put the process in the background. If you observe the behavior you will noticed that the prompt is in your control right away because it's running in the background.
If you run the jobs command you see the process is running but it's running in the background. However if you forgot to put the & at the end the job will have to be finished before you get your prompt back, the only way to get your prompt back before then is to type CTRL+Z , but that would also stop the process or job from running. That's probably not what you wanted
You've gotten your prompt back but you've also stopped the process, that's probably not what you wanted to do. You want to get your prompt and keep the job running at the same time. So the solution is to use the bg command to run the job in the background
To bring the job into the foreground you just type fg
As you can see you lose the prompt once the job is put in the foreground because it has to finish running the job before you can get the prompt back. Press CTRL+Z again to interrupt the process
Now there's another way to put a process in the background, that is to specify the job number. So if we want to put the second job that was stopped in the background again we can type bg 2
You can do the same thing with the fg command. Kill the sleep process with the command pkill sleep for cleanup
Monday, March 14, 2022
Since searching for a process and killing process is such a common task there's are shortcut commands available for these tasks in form of pgrep and pkill. As you suspect these commands are used for finding and killing processes respectively.
For example we can search for gnome processes like this instead of combining the ps command with the grep command
Or to get more information you can use the command like command below to get the full listing
[jhuynh@cent7 ~]$ ps -F -p $(pgrep gnome)
The pkill command works in similar fashion, so instead of killing the process by the number, you can just kill the bash process with this command pkill PID, one caveat is that it does not work like kill -9 so your usage may be limited.
Another useful command is the top command, this command will sort the processes that uses the most resources first by default. All you have to do is type top in the terminal
You sort it by other attributes as well such as memory, by default it's by CUP usage, to get to the other options type the f key
Select %MEM and type s to select it and press esc to sort the top screen by memory usage
Monday, March 7, 2022
The kill command in Linux is a powerful command to kill a process. You usually see the kill command accompanied by the process ID however there's other ways you can use the kill command. To get a list of how you can use the kill command, type kill -l
There's one important thing that you have to remember as a standard user you can only kill are your own processes, so if you have two terminals open and one of them is not yours. You can only kill the processes in your terminal or session.
Let's say you run the command ps to see the processes that are running, all you need to kill a process is type kill -9 PID
So it's something like this kill -9 3544 to kill the bash process this will kill the terminal, alternatively you can type out the word that corresponds to -9 with the command kill -sigkill 3544