Experience in nix like systems. What is the difference between Unix and Linux. The term "UNIX-like" and the UNIX trademark

If you've recently started learning Linux and getting comfortable in this vast universe, then you've probably come across the term Unix a lot. Sounds very similar to Linux, but what does it mean? You are probably wondering what is the difference between unix and linux. The answer to this question depends on what you understand by these words. After all, each of them can be interpreted in different ways. In this article, we will look at a simplified history of Linux and Unix to help you understand what they are and how they are related. As always, you can ask questions or add more information in the comments.

Unix began its history in the late 1960s and early 1970s at AT&T Bell Labs in the United States. Together with MIT and General Electric, Bell Labs began developing a new operating system. Some researchers were dissatisfied with the development of this operating system. They moved away from working on the main project and began to develop their own OS. In 1970, this system was called Unix, and two years later it was completely rewritten in the C programming language.

This allowed Unix to be distributed and ported to various devices and computing platforms.

As Unix continued to evolve, AT&T began licensing it for university use as well as for commercial purposes. This meant that not everyone could, as now, freely change and distribute the code of the Unix operating system. Soon, many editions and variants of the Unix operating system began to appear, designed to solve various problems. The most famous of these was BSD.

Linux is similar to Unix in functionality and features, but not in code base. This operating system was assembled from two projects. The first is the GNU project developed by Richard Stallman in 1983, the second is the Linux kernel written by Linus Torvalds in 1991.

The goal of the GNU Project was to create a system similar to, but independent of, Unix. In other words, an operating system containing no Unix code that could be freely redistributed and modified without restrictions, like free software. Since the free Linux kernel could not run on its own, the GNU project merged with the Linux kernel, and the Linux operating system was born.

Linux was designed under the influence of the Minix system, a descendant of Unix, but all the code was written from scratch. Unlike Unix, which was used on servers and large mainframes of various enterprises, Linux was designed for use on a home computer with simpler hardware.

Today, Linux runs on more platforms than any other operating system, including servers, embedded systems, microcomputers, modems, and even mobile phones. Now the difference between linux and unix will be considered in more detail.

What is Unix

The term Unix can refer to such concepts:

  • The original operating system developed by AT&T Bell Labs from which other operating systems are developed.
  • Trademark, written in capital letters. UNIX is owned by The Open Group, which developed the Single UNIX Specification, a set of standards for operating systems. Only those systems that comply with the standards can legitimately be called UNIX. Certification is not free and requires developers to pay for the use of this trademark.
  • All operating systems are registered with the Unix name. Because they meet the aforementioned standards. These are AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS and OS X - yes, even those that run on Apple computers.

What is Linux

The term Linux refers only to the kernel. An operating system would not be complete without a desktop environment and applications. Since most applications were developed and are now being developed under the GNU project, the full name of the operating system is GNU/Linux.

A lot of people now use the term Linux to refer to all distributions based on the Linux kernel. At the moment, the newest version of the Linux kernel is 4.4, version 4.5 is under development. The renumbering of kernel releases from 3.x to 4.x took place not so long ago.

Linux is a Unix-like operating system that behaves like Unix but does not contain its code. Unix-like operating systems are often referred to as Un*x, *NIX and *N?X, or even Unixoids. Linux does not have a Unix certification, and GNU stands for GNU not Unix, so Mac OS X is more Unix than Linux in that respect. Nevertheless, the Linux kernel and the GNU Linux operating system are very similar to Unix in functionality, implementing most of the principles of the Unix philosophy. It's human-readable code, storing system configuration in separate text files, and using small tools command line, GUI and session manager.

It is important to note that not all Unix-like systems have received UNIX certification. In a certain context, all operating systems based on UNIX or its ideas are called UNIX-like, whether they have a UNIX certificate or not. In addition, they can be commercial and free.

I hope now it has become more clear how unix differs from linux. But let's go even further and summarize.

Main differences

  • Linux is a free and open source operating system, but the original Unix is ​​not, except for some of its derivatives.
  • Linux is a clone of the original Unix, but it does not contain its code.
  • The main difference between unix and linux is that Linux is only a kernel, while Unix was and is a full-fledged operating system.
  • Linux was designed for personal computers. And Unix is ​​focused primarily on large workstations and servers.
  • Today, Linux supports more platforms than Unix.
  • Linux supports more types of file systems than Unix.

As you can see, the confusion usually comes from the fact that linux vs unix can mean completely different things. Whatever the meaning, the fact remains that Unix came first and Linux came later. Linux was born from a desire for software freedom and portability, inspired by the Unix approach. It's safe to say that we are all indebted to the free software movement, because the world would be a much worse place without it.

Today, personal computer users are provided with an extensive selection of operating systems. By far the most common among them are operating systems of the Windows family and, to a lesser extent, Linux. What to choose? On laptops, in most cases, one or another licensed operating system is already preinstalled. For ease of selection, Windows operating systems are named according to their area of ​​​​use. For example:

  • Windows 7 Starter - Operating system for netbooks. Differs exclusively in 32-bit execution, limited functionality Windows interface Aero, the lack of a quick switch between users, the inability to change the desktop background and does not support 64-bit processors. This operating system is sold only as a pre-installed OS, buy it at boxed version impossible.
  • Windows 7 Home Basic is an inexpensive operating system for home use. It still lacks the built-in Windows Media Center Edition (MCE), Windows Aero support, and Multitouch support. But there is a standard Windows interface and quick switching between users. This operating system can be purchased in a boxed version.
  • Windows 7 Home Premium is a system for advanced home use with advanced features. It has built-in Windows MCE, support for up to 4 TV tuners, a full-fledged Windows Aero interface, is compatible with Dolby Digital and supports multi-touch. In the boxed version, there are 2 DVD discs at once - with 32 and 64-bit versions of the distribution kit. This OS can be installed on 2 processor workstations.
  • Windows 7 Professional is an operating system for working with advanced features. An even more reliable system (due to some features) for business users. Has advanced networking capabilities. It also boasts an XP Mode license and the ability to search for a preferred printer for selected networks. In a laptop with such an operating system, you can often find a Windows XP distribution kit.
  • Windows 7 Ultimate - the name speaks for itself - a universal system for performing any task. Ideal for businesses. If desired, the desired operating system (except for Windows Starter) can always be purchased and installed on a laptop yourself. If you already have a "Boxed" version of the operating system purchased earlier, then it makes sense to purchase a laptop without an operating system so as not to overpay for a pre-installed OS.

There are many different *nix systems and Linux/BSD distributions. It happens that one or another function or program that you are used to in your favorite system, suddenly, for some reason, is not in another. Are there analogues or a way to make it work?

Running Skype under FreeBSD

It is known that the version of Skype from the ports, to put it mildly, is outdated - for example, there is no way to make video calls. Using the Windows version through wine is not an option - it does not run under wine. But there is a way out - install the compatibility layer with Linux, then, after applying the patch to the kernel and then recompiling it, install Skype. Let's describe exactly how to do this.

First of all, you need to build the emulators/linux-base-c6 port - at the same time, if you need a Flash plugin, you need to perform some actions, namely, comment out the following line in the makefile of this port:

CONFLICTS=linux_base-gentoo* linux_base-f* linux-glib2-*

Then type commands:

# sysctl compat.linux.osrelease=2.6.18 # make patch

The first will set the kernel version to 2.6.18 (then you will need to set this variable in /boot/loader.conf so that it does not reset after reboot), and the second applies the patch that we just made. After that, copy the following libraries from the work directory to /compat/linux/ :

lib/ld-2.12.so lib/ld-linux.so.2 lib/libc-2.12.so lib/libc.so.6 lib/libdl-2.12.so lib/libdl.so.2 lib/libgcc_s-4.4. 6-20110824.so.1 lib/libgcc_s.so.1 lib/libglib-2.0.so.0 lib/libglib-2.0.so.0.2200.5 lib/libpthread-2.12.so lib/libpthread.so.0 usr/ lib/libstdc++.so.6 usr/lib/libstdc++.so.6.0.13

Create a symlink from usr/lib/libtiff.so.3 to libtiff.so.4:

# ln -s libtiff.so.3 libtiff.so.4

All these steps are only necessary if you need the www/linux-f10-flashplugin port.

The next step is to replace the header file to support video calls (required if the FreeBSD version is below nine):

# cd /usr/ports/multimedia/linux_v4l2wrapper-kmod # make patch # mv -i /sys/compat/linux/linux_videodev2.h(,.bak) # cp -i work/linux_v4l2/linux_videodev2.h /sys/compat/ linux

and rebuild the kernel. This is necessary so that Linux ioctl calls are properly translated into FreeBSD calls.

You will also have to install the multimedia / webcamd port:

# cd /usr/ports/multimedia/webcamd # make install clean

And now, finally, you can install Skype - but not just any version, but a specific one. We take it from here, unpack it to our home directory and, if everything is set up correctly, enjoy.

Running OS X Applications on Linux

There are many interesting applications under OS X. However, the Mach-O executable format used in Apple's OS is different from ELF, and the API, although POSIX-compliant, is still incompatible with Linux. At the end of 2012, the Darling project was presented, which is currently positioned by developers as a tool for launching development tools. At the moment, very few applications are supported (mostly console ones), but I would like to hope that their number will grow steadily. The project, in particular, uses GNUStep, a free implementation of the Cocoa API that is used in OS X.

Building Darling will require installing many packages, including the clang compiler:

$ sudo apt-get install git cmake clang nasm g++ checkinstall libxml2-dev libgnutls-dev libicu-dev libcairo-dev libjpeg-dev libpng-dev libtiff-dev libbsd-dev libudev-dev liblcms-dev libkqueue-dev libssl-dev libbz2- dev uuid-dev libncurses-dev libxrandr-dev

We get the GNUStep Make utility from the Git repository, compile and install:

$ git clone https://github.com/gnustep/gnustep-make.git $ cd gnustep-make $ CC=clang CXX=clang++ ./configure $ sudo make install

Building the Objective-C support library - GNUstep Libobjc2:

$ git clone https://github.com/gnustep/gnustep-libobjc2.git $ cd gnustep-libobjc2 $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ cmake . $ rm GNUmakefile $ make $ sudo make install

Then the base part of GNUStep:

$ git clone https://github.com/gnustep/gnustep-base.git $ cd gnustep-base $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ make $ sudo make install

$ git clone https://github.com/gnustep/gnustep-gui.git $ cd gnustep-gui $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ export LD_LIBRARY_PATH=/usr/local/lib $ echo export LD_LIBRARY_PATH=/usr/local/lib >> ~/.bashrc $ make $ sudo make install

GNUStep CoreBase, which is an analogue of CoreFoundation, is also needed:

$ git clone https://github.com/gnustep/gnustep-corebase.git $ cd gnustep-corebase $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ make $ sudo make install

Responsible for rendering analogue of Quartz 2D - Opal also needs to be assembled:

$ git clone https://github.com/gnustep/gnustep-opal.git $ cd gnustep-opal $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ make $ sudo make install

Finally, you need to compile the actual Darling:

$ git clone https://github.com/LubosD/darling.git $ cd darling $ CC=clang CXX=clang++ cmake . $make

That's it, you can run OS X applications by typing:

./dyld <аргументы>

Installing deb packages on Red Hat-like systems

The RPM and deb package formats are incompatible with each other - and these two package managers do not get along on the same system. As a general rule, the need to install non-native system packages is rare. But if it does, you can use the tool to convert alien packages. Of course, this is not a panacea - not all packages can be converted with it, and it should be used with caution. Download its sources, unpack and install:

# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.88.tar.gz # tar xzvf alien_8.88.tar.gz && cd alien # make && make install

I will describe some command line options related to converting to RPM.

  • -r - actual conversion to RPM;
  • -i - installs the resulting package and removes the package file from the system;
  • -g - creates the necessary directory with files, but does not create the package itself;
  • -c - convert scripts. Use this option with caution as the Ubuntu scripts will not work with RHEL.

As an example, let's convert the zsh package and install it:

# wget http://goo.gl/Fykuzu # alien -r ./zsh_4.3.17-1_i386.deb # rpm -ivh --nodeps ./zsh-4.3.17-2.i386.rpm

We install this package forcibly - alien in this case converted the dependencies rather strangely. More specifically, for some reason, the /bin/zsh file was needed to install the package, while we are installing it. It is also worth noting that the names of the package files are also converted and the last digit of the version of the converted package is incremented by one.

In my case, the package installed fine and zsh started without problems. But it is useful to warn once again that this method must be used with caution.



Kernel update without reboot

On Linux, there are two solutions to minimize the number of hard resets, kexec and ksplice. The kexec system call appeared in the mainline version of the kernel in June 2005. It is intended to load a new kernel directly from an existing one. This technology works in this way:

  • first, the kernel image is copied into memory;
  • then this image is moved to the dynamic memory of the current kernel;
  • finally, the image is copied to the desired pages, and control is transferred to it.

The advantages of this method over a normal reboot are obvious: the reboot is faster, in the case of SCSI controllers there is no need to wait for device detection, relative independence from bootloaders and the ability to quickly switch to another installed distribution. However, there are also disadvantages. First, before loading the kernel, it is recommended to gracefully terminate all processes and synchronize file systems, since all kernel subsystems are initialized anew. Secondly, all devices will be in an unknown state, and if the driver is written crookedly, it will not work.

To use kexec in practice, you need a kernel with the option enabled (CONFIG_KEXEC=Y) and the kexec-tools package. Manually booting the kernel (in the case of Ubuntu) is done with the following two commands:

# kexec -l /vmlinuz --initrd=/initrd.img --reuse-cmdline # kexec -e

The first instruction loads the kernel into memory, and the second transfers control to it. This uses the current kernel parameter string. To use your own parameters, specify them in the --cmdline="" option.

On Ubuntu, you can also use kexec to perform a fast reload by setting the LOAD_KEXEC option in the /etc/default/kexec file to true, and then everything standard procedures reboots will be done through it.

Ksplice, on the other hand, according to its developers, allows you to apply security patches to the kernel on the fly. At the same time, all running applications work as before, without the need to restart them. The project was bought by Oracle, and for RHEL, due to the competition of firms, patches are paid. This, however, does not in the least prevent distribution of patches for Ubuntu. Download and install the package (for version 12.04):

$ wget http://goo.gl/MHAZ6c $ sudo dpkg -i ./ksplice-uptrack.deb $ sudo apt-get -f install

Applying all available patches is done with one simple command:

$ sudo uptrack-upgrade -y

To remove all patches, use the command

$ sudo uptrack-remove --all -y

In general, this technology works quite stably - the fact that Oracle bought it speaks for itself. However, only those patches that do not make significant changes to the kernel structures can be installed in this way.

NetBSD Kernel Modules on Linux

A few months ago, the NetBSD team managed to get the NetBSD kernel modules working on Linux. This can be used, for example, to mount FFS2 partitions, as well as to add other NetBSD-specific features not supported by Linux.

The developers were able to load modules built for the NetBSD kernel by using so-called RUMP kernels (Runnable Userspace Meta Programs). The RUMP kernel is an ultra-lightweight kernel that runs in user mode. There are three implementations of such kernels:

  • implementation as a POSIX process. It is the main one and allows you to run RUMP kernels as user processes on POSIX-compliant systems;
  • an implementation for Xen that allows you to run the RUMP kernel directly in DomU, without the need to install a full-fledged OS and run it already in it;
  • an implementation in the Linux kernel to run RUMP kernels directly in kernel space.

I note that RUMP kernels are not virtualized - they are designed to execute only kernel modules, and processes from the host system can use them. As a result of such architectural decisions, the RUMP kernel turned out to be really lightweight - it occupies about 100 KB in memory. The advantages, according to the developers, are as follows:

  • many things, such as the TCP/IP stack, can use RUMP kernels without requiring a full OS;
  • the ability to run several RUMP cores with different functionality - for example, the same TCP / IP stack can be launched for different purposes and, accordingly, will be optimized differently;
  • security - each RUMP kernel runs in its own address space, and the risk of hacking (in the case of NetBSD is not very large due to its low prevalence), for example, through vulnerable FS drivers, becomes even more unlikely;
  • the ability to develop and test kernel code in user mode, which is much more convenient than using virtual machines.

However, this is all theory, and it's time to move on to practice. To compile the RUMP kernel, you need to get the buildrump.sh tool, for which we use Git:

$ git clone https://github.com/anttikantee/buildrump.sh.git $ cd buildrump.sh $ ./buildrump.sh

Then you need to get the archive with the kernel modules. Since it is in a snapshot and its date is constantly changing, I cannot give the exact address, but in my case the command to get it was the following:

$ wget http://goo.gl/gNCALo

Extract the module you need to your working directory. Following this, you will most likely need to compile the utilities for use with the RUMP kernel, specifying the paths to the header and library files.


Using Windows network drivers with NDISWrapper

Modern Linux can handle a huge variety of network hardware. However, individual network devices (such as wireless adapters) in Linux either do not work correctly, or even have a driver only under Windows. But there is a way to run Windows versions of some network drivers on Linux. To do this, you need to use NDISWrapper.

As the name suggests, this is a "wrapper" tool for NDIS compatible drivers. It provides them with the minimum required set of ntoskrnl and hal functions. And the amazing thing is, it all works.

In order to use it, install the appropriate package:

$ sudo apt-get install ndiswrapper-common ndiswrapper-dkms cabextract

Then we blacklist the driver native for Linux (as an example, one of the Broadcom chipsets will be used below) so that there is no conflict:

/etc/modprobe.d/blacklist.conf #<...>blacklist bcm43xx

If the driver is in an exe or cab archive, you may need cabextract.

$ cabextract setup.exe

We take the driver files and install it using ndiswrapper:

$ sudo ndiswrapper -i bcnwl5.inf

We write the kernel module to autoload by adding the ndiswrapper line to the /etc/modules file and load it:

$ sudo modprobe ndiswrapper

If everything is configured properly, the network will work.


Hot switching of graphics cards

Modern video adapters support hot plugging - of course, subject to the presence of a second adapter. Linux (more specifically, X.Org) has recently also supported this technology. This does not require any special gestures on the part of the user - all he needs to do is simply connect the device. This, of course, requires the latest version of X.Org with the xf86-video-modesetting driver to be installed. Nevertheless, it is worth describing in a little more detail how exactly this works.

When the X server starts, this driver is loaded using udev. In this case, instead of actually displaying the screen, the X server creates an abstraction of Screen, and it projects DrvScreen onto it, which is just a physical device. When a second video card is connected, another instance of DrvScreeen is created, and all activity on Screen is duplicated on both devices.

Unlike the similar Xinerama technology, this technology does not work at the X11 protocol level, but at the level of interaction with the equipment. At the same time, you don't have to worry about which adapter the output is generated from - you can perform all resource-intensive actions on one, more powerful video card, and then transfer the image to a low-power one.

The technology is quite new, not tested by time, but promising. If you have two video cards, you can try it out right now.

Porting software using Docker

There are many ways to create and run isolated applications on Linux. Some of them are complex, some are simpler, but many require file system deployment, which can take a long time. Relatively recently, cloud hosting company DotCloud opened the Docker project. It is written in the Go language and is designed to manage LXC containers, extending and supplementing their basic capabilities. It allows you to isolate not the entire system, but only individual processes and clone / transfer them to other computers (of course, with the same hardware architecture). The project is intended for project transfer, all kinds of deployment and automation of distributed systems. Its main features:

  • the ability to place various loads in a container - scripts, binaries, libraries, Jar files ...
  • portability - it runs on any modern x64 processor with new Linux kernels (a kernel of at least 3.8 with AUFS support is recommended);
  • isolation of processes from the main system and from other isolated processes;
  • since each container uses its own FS, it does not matter in which environment it is launched;
  • due to the fact that this isolation of sufficiently high-level entities, no machine time is wasted on virtualization.

Installing on Ubuntu 12.04 will require updating the kernel to version 3.8, which is thankfully backported from 13.04:

# apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring # reboot

After the reboot, add the Docker PPA and install it:

# apt-get install python-software-properties && add-apt-repository ppa:dotcloud/lxc-docker # apt-get update # apt-get install lxc-docker

Docker installed.

Here are the most commonly used commands:

  • docker pull - get an image from the repository;
  • docker run - run any application in a container;
  • docker ps - view executable containers;
  • docker diff - view changes in the container's file system;
  • docker commit - save changes to the image.

As an example, let's install the Redis daemon. First of all, let's run Docker in daemon mode and get the base image.

$ sudo docker -d & $ sudo docker pull ubuntu

Running via sudo is needed here because the daemon is started as root and uses a UNIX socket, which is also owned by root. If you create a docker group and include yourself in it, then this is not needed. In what follows, it is assumed that this is exactly what has been done.

Start the shell and install Redis:

$ docker run -i -t ubuntu /bin/bash # apt-get update # apt-get install redis-server # exit

Let's take a snapshot with the installed server. To do this, you first need to find out the container ID:

$ docker ps -a

The resulting ID must be used in the following command:

$ docker commit 691b3214f7de rom/redis

Finally, we start Redis in background, forwarding port 6379 to the container:

$ docker run -d -p 6379 rom/redis /usr/bin/redis-server

Redis is ready to use.

INFO

Compiled Docker packages are available only for the x64 platform, they are not available for x86.

Conclusion

The article described several ways to do what seemed impossible. However, it is rather difficult to consider all scenarios, especially since *nix systems are flexible - there is always more than one way to do something.


at - specify the time when the command is executed
chown - change file owner
batch - run a command at boot time
telnet - telnet client
ftp - ftp client
rmdir - remove a directory
finger/who/users - display a list of users in the system.
gcc - C compiler
ftpwho - ftp finger
mv - move file
kill - terminate a process
cat - text editor
ls - directory listing
chmod - change file access privileges
rm - delete a file
id - viewing permissions, i.e. uid and gid
mail - well, like, working with soap
cat |less - if the terminal does not allow "scrolling".
cd - change directory
cron - daemon of at and batch commands
logname - getting the login name
cp - copy something.
uname-a is all about the system version.
crontab - set time reserves between prog launches.
ps - get acquainted with the list of processes.
pwcheck - View the default password file.
umask - mask for a specific file.
su - su program
sleep - stop the process.
passwd - work with a password.
news - usenet display
write - message to the current user.
uux - execute commands on a remote computer
nslookup - hydromedical center reports about IP
uucp - copy file from/to remote computer
uuname - list of UUCP hosts
more - display text in page mode
screen - super handy if you logged into the server via sssh and you have a bad connection.
top - view CPU usage by processes.
grep - search for a line in a file with a given key
grep -i - the same, case insensitive.
uuencode - Generate a text version of a binary file (for soap)
uudecode - well, sort of the opposite of the previous one.
tar - create archives of files.
uncompress - getting the original from a compressed file.
* login - request from the user name and password (request from the system to the user) to enter the system (by default, when typing a password, it is not displayed).
* logout - exit from the current shell session.
* startx is a command to start the X Window GUI (don't confuse it with the Windows system. Don't be afraid. It's not).
* shutdown - Shuts down the system and prevents file system corruption while doing so, but is only used when running in console mode. When running in X Window mode, do not use.
* halt - fast and correct system shutdown.
* poweroff - correct shutdown of the system.
* reboot correct shutdown with subsequent boot. Reboot.
* vmstat - displays information about processes, memory and CPU usage.
* su - login to the administrator session, but you will have to enter a password. To exit this session, type exit and press ENTER.
* apropos - search for a string in the titles and titles of the documentation (an additional search word is entered). Gives a list of everything found.
* cal - formatted calendar for the current month (add y and it will be a calendar for the entire current year).
* date - Displays the current date and time, based on the kernel's system clock.
* oclock - a simple clock that hangs on the desktop (many additional options).
* finger - display information about the user whose name is specified in the command.
* hostname - the command displays the identifier of the given host (its name). root - can change the hostname to a new one.
* hwclock - your computer's built-in clock. Root privileges are required to change the date and time and synchronize with the system clock.
* pwd - Displays the full path to the current directory.
* tzselect - launches a utility that allows you to select a time zone.
* uname - displays information about the operating system used (when entering additional command parameters, it gives quite a lot of information).
* uptime - shows the current time, session duration, number of users and CPU usage.
* users - displays a short list of users currently logged into the system.
* w - detailed information about all users currently working and also simple, login, etc. If you need one user, then specify the name in the parameter.
* whatis - search the database of manual pages and display a short description.
* who - list of users working in the system at the moment.
* whereiz finds files, man pages for the specified command.
* which - shows the full path to the command executable.
* whoami - shows the current user ID of the user working in this terminal.
* write - sends a message to another user on the system by copying lines from the sender's terminal to the recipient's terminal.
* wall - sends a message to the terminal of each user currently logged in.
* history - shows a numbered list of commands you have run in this and the previous session. If there are quite a lot of them in the history list, you will see the latest ones.
* jobs - Lists all running and suspended jobs.
* kill - kill the process (you must specify which one).
* killall - allow processes to be controlled by their names or filenames, rather than process IDs as in kill. All specified processes are terminated.
* kernelversion - shows the major and minor versions of the kernel.
* nice - allows you to display or set the task priority.
* ps - Lists all running processes.
* pstree - shows the hierarchy of system processes, which shows their interdependence well.
* renice - sets the priority for the specified task.
* script - allows you to write all output from the terminal to a file. To stop recording, press Ctrl + d. If the file name is not specified, then it is written to typescript.
* times - shows the total execution time of processes for the entire system and the given user.
* top - launches a program that allows you to manage processes. And a lot of additional, useful information.
* cd - change the current directory. By default, goes to the home directory of the current user (if no parameters).
* dir - Displays files in the current directory in alphabetical order and case sensitive.
* file - shows the content type of the specified file (text, executable, data).
* find - search for files in the current directory. If you specify a path, you can search everywhere.
* free - displays information about RAM, swap, cache, free memory, total, etc.
* ls - Shows all files in the current directory in alphabetical order. Similar to dir.
* last - shows a list of users who have logged in since the /var/log/wtmp file was created.
* lastlog - checks the login history of registered users. Formats and prints the /var/log/lastlog file.
* logger - sends a request to the syslogd daemon to write a message to the syslog.
* lpr - sends a document to be printed to the print daemon.
* chmod - Changes the file access mode. Character or number format.
* chown - change the owner of the specified file. Requires root access.
* chage - used to change the expiration date of the account. For administration.
* chfn - Changes user information in the /etc/passwd file from which the finger command takes information.
* chgrp is an admin command to change the owner group of a file.
* clear - clears the terminal screen (if possible).
* crontab - provides the ability to perform certain tasks on a schedule. It is most often used by the administrator, although users may have their own tasks.
* csplit - splits the file into several parts. You must specify the splitting method (lines, etc.).
* cp - copies one file to another, or multiple files to a directory.
* dd - copying a file while performing various, additional transformations.
* dc - calculator.
* debugfs - used to restore the file system (ext2,ext3) if the fsck command is not enough.
* df - Shows the amount of used and free disk space for all mounted file system partitions.
* du - shows the number of disk blocks occupied by each of the files in the directory.
* mc - launches the Midnight Commander file manager program in a text console. It resembles MSDOS managers and is quite simple and easy to use. There are a lot of useful and convenient functions.
* mkdir - create the specified directory.
* man - reference manual.
* mcat - Copies raw data to a floppy disk.
* mcopy - Uses a formatted MSDOS floppy to copy files to and from Linux without first attaching the floppy to the file system.
* mdel - deletes a file on an MSDOS formatted floppy disk.
* mdir - displays the contents of a directory on an MSDOS floppy disk.
* mdu - shows the disk space occupied by the MSDOS directory.
* mesg - controls access to your terminal so that colleagues cannot bombard you with messages using the write command
* mformat - creates on a floppy disk file system MSDOS.
* mkbootdisk - used in some distributions to create a boot floppy containing everything needed for emergency boot.
* mktemp - creates a unique filename for temporary work.
* mlabel - creates a volume label on MSDOS on a formatted floppy disk.
* mmd - creates an MSDOS subdirectory on a formatted floppy disk.
* mmount - Mounts a formatted MSDOS device to the file system.
* mmove - Moves or renames a file on an MSDOS floppy disk.
* more - text file paging tool.
* mv - Renames or moves files or directories.
* rm - delete the specified file. You can delete a lot.
* rmdir - delete the specified empty directory.
* safedelete - deletes the specified file to the safedelete directory, where it is stored for some time before permanent deletion.
* stat - display all available information about the specified file.
* touch - changes the last access or modification time of a file to the current time.
* undelete - Restores files deleted with the safedelete command.
* wc - Shows the number of lines, words, and characters in a file.
* bunzip2 - unpacks the specified file 30% faster than gzip.
* bzip2 - compresses the specified file using an accelerated algorithm.
* bzip2recover - attempts to recover data from a damaged bzip2 compressed file.
* compress - compresses the specified file using a different algorithm.
* uncompress - uncompresses the file compressed by the previous command.
* cpio - allows you to create archives and extract files from archives. Allows you to copy files. You must specify the appropriate parameters.
* gpg - allows you to encrypt and decrypt a file. Encryption method public key. Allows you to create electronic signatures. If you do not have this program, [You must login or ]
* gzip - compresses the specified file.
* gunzip - unpacks the specified file (extensions .Z, .gz, .tgz, .zip).
* gzexe - allows you to compress executable file with the specified name so that it is automatically decompressed and executed when the user instructs to execute the compressed file.
* gpasswd - sets the group password.
* mcrypt - Encrypts the specified file. A new file is created in the working directory with the extension .enc. You will be prompted for a password. Don't forget it.
* mdecrypt - decrypts the same file. If these utilities are not present, [You must login or ]
* tar - puts two or more files into a new or existing archive, or extracts them from an archive. When given a directory, it will archive all files in the directory and subdirectory.
* talk - allows you to conduct an interactive dialogue with an INTERNET user.
* tee - sends output to two output devices. Can be output to screen and file at the same time.
* toe - displays information about existing terminals that can be used for further work.
* touch - changes the creation time of the file to the current one. If the file does not exist, it creates a new, empty file.
* unarj - unpacks or lists the contents of the specified archive in .ARJ format (MS DOS compression format).
* unzip - unpacks and extracts files from archives created by ZIP utilities (Linux, MS DOS, Microsoft Windows).
* zip - archives and compresses files.
* zipinfo - displays information about the contents of the archive. If you specify a name, it will display information about a specific file.
* zipnote - allows you to display and edit comments on files from a ZIP archive.
* zipsplit - allows you to split a zip archive into small enough parts to write them to removable media, and writes the files to the specified device (floppies).
* zforce - adds a .gz extension to all files in the working directory, or to the specified file, that have been compressed but do not have an extension. prevents recompression.
* uuencode - encodes a binary file for transmission over ASC11 networks.
* uudecode - decodes the above named file.
* autorun - automatically recognizes all available CDROM drives in the system, mounts them when a disc is inserted, and can run individual applications (eg player). To use, you need to add parameters to the drive file.
* badblocks - check the specified device for bad sectors (specify device).
* eject - ejects the media from the specified device. If the device is mounted then the command unmounts before ejecting the media.
* e2fsck - checks and, if necessary, repairs a damaged file system volume (ext2, ext3).
* echo - prints a line of text to standard output.
* fdformat - floppy disk formatting. Additionally, the device name and the required formatting type are entered.
* fg - transfers the process running in the background to the foreground.
* fgconsole - shows the number of active virtual consoles.
* fsck - checks and repairs the file system.
* mount - mount the file system.
* umount - unmount the file system (in both commands, you must specify what exactly).
* rdev - when called without parameters, displays information about the current file system.
* rcp - used to copy files from one computer to another.
* rdate - Gets the date and time value from another host. Used to synchronize the system time of the hosts.
* rename - renames files. Very handy when there are a lot of files.
* resize - resizes the virtual terminal window in the graphical environment.
* restore - restores files archived using the dump command.
* runlevel - Displays the current and previous runlevels.
* shred - performs a secure deletion of a file after rewriting its contents to another disk.
* sleep - pauses the start of the process for the specified number of seconds.
* usleep - pauses for microseconds.
* sync - flushes file system buffers.
* cmp - performs a quick comparison of two specified files. If they are identical, no messages are displayed.
* column - formats the input text from the specified file into a list of five columns.
* diff - Compares two specified text files. Each difference is displayed in context. Allows you to compare directories.
* diff3 - compares three specified files and outputs the results.
* enscript - Converts the specified text file to Post Script format. The output can be printed or written to a file.
* fmt - this utility formats each line in the specified file so that all lines have the same width.
* head - the utility outputs the first ten lines of a file. Multiple files are also possible.
* ispell - launches an interactive spell checker for the specified file.
* id - Displays the effective user and group id values ​​for the current user.
* ifconfig - displays the status of the current network configuration or configures a network interface.
* less - displays the contents of the specified file on the screen and allows you to view it conveniently.
* nl - the command numbers the lines in the specified file.
* paste - combines the corresponding lines of files into columns. If desired, you can combine several files.
* pdf2ps - Converts a PDF file to Post Script. The result is written to disk.
* pdftotext - converts a file from PDF to text and writes the result to disk.
* pr - Prepares text for printing by performing paginated formatting. Multiple files can be prepared.
* sort - the command allows you to sort the lines of the file in alphabetical order.
* split - splits the file into parts.
* zcat;zmore - prints the contents of a gzip-compressed file to the screen without decompressing.
* zcmp - compares two gzip-compressed files without decompressing.
* zdiff - compares two gzip-compressed files without decompressing.
* zegrep; zfgrep; zgrep - searches for the specified string, expression in a gzip-compressed file, without unpacking.
* aumix - Runs an interactive utility that manages various sound card settings.
* cdda2wav - a utility designed to burn audio tracks from an audio CD to WAV files. If the file name is not specified, then the recording goes to the audio.wav file in the current directory.
* cdlabelgen - the command is intended for preparing covers for CD boxes. The result is in a Post Script format file. Requires a Perl interpreter of at least version 5.003.
* cdp - starts the audio CD player in text mode.
* cdparanoia - reads audio tracks from audio CDs and writes to WAV, AIFF, RAW files.
* combine - combines two or more graphic files into one. A huge number of special effects. It is part of the Image Magick package, you can take them [You must enter or ]
* convert - Converts the specified input graphic file to output. Recognizes many formats. Download in the same way as the previous one.
* identify - determines the format and characteristics of the graphic file and checks the integrity and presence of errors.
* mogrify - converts the graphic file and overwrites the original.
* montage - convert multiple files into a merged image. [You must login or ]
* mpg123 - plays an MP3 audio file on the main playback device. The file name or its address on the Internet is entered. To stop playback, Ctrl + c. To stop and exit the program, press Ctrl + c twice.
* play - plays the sound file with the specified name. Automatically recognizes the file type. Allows you to add various sound effects to the playing files.
* playmidi - plays sound files in MIDI format.
* rec - Records input from a microphone or other inputs to an audio file. The file type should be specified using the (type) parameter. It is possible to add sound effects.
* sox - converts samples from the input format to the output format with the addition of effects.
* emacs - launches the Emacs text editor.
* joe is an easy to use text mode editor.
* pico - a simple and easy-to-use text editor. Convenient for editing configuration and simple files.
* vi - launches the classic VI text editor for UNIX systems.
* dmesg - Displays kernel messages, including those displayed at startup and afterwards. To make it easier to read, enter dmesg|less.
* groupadd - create a user group with the specified name.
* groupdel - deletes the group with the specified name.
* groupmod - modifies the parameters of the group with the specified name.
* mkpasswd - Generates a high quality password that is nine characters by default and contains at least mixed case letters and numbers.
* passwd - allows the user with the specified username to change the password of his account. root can change the password of any user.
* pwgen - generates a high quality password that is easy to remember. The length of the password is indicated by a number. If this utility is not available,
* quota - Shows current disk usage statistics and current limits for the user or group with the given name.
* quotacheck - Examines the file system for disk space usage.
* quotaon - Enables and disables disk space limits.
* rpm launches the package manager, a utility that allows you to install, check, and update packages with an rpm extension.
* rpmfind - search for the desired package in the RPM package database via the INTERNET.
* tmpwatch - deletes all files in the specified directory if they have not been accessed within the last n hours. Cleans up temporary directories.
* useradd - create a new user with the specified name.
* userdel - deletes the user with the given name.
* usermod - modifies the parameters of the user with the specified name.
* fetchmail - mail fetch utility. Runs in the background. Downloads mail from the specified server. If not, [You must login or ]
* ftp - establishes a connection with the specified host and allows you to download or upload files.
* lynx - start a console web browser.
* mail is a utility for editing and viewing e-mail. Sending and receiving letters.
* netstat - display information about the network subsystem. There are a lot of settings and parameters.
* ping - send packets to the specified address to check the connectivity with this node.
* telnet - opens a terminal window on the remote host and starts an interactive session.
* wvdial - the program connects to the INTERNET via the PPP protocol using the parameters stored in the /etc/wvdial.conf file
* wvdialconf - searches for a modem, determines the port to which it is connected, its initialization string and maximum baud rate. This information is automatically written to a file (see above). Root access is required.
* ar - archiving tool, designed to create and unpack an archive.
* arch - Displays information about the architecture of the CPU.
* at - queues jobs for later execution at the specified time.
* atq - shows a list of jobs that are queued for execution.