ืคืงื•ื“ื•ืช ืœื™ื ื•ืงืก ื‘ืกื™ืกื™ื•ืช ืœื‘ื•ื“ืงื™ื ื•ืขื•ื“

ืคึฐึผืชึดื™ื—ึท

ืฉืœื•ื ืœื›ื•ืœื! ืฉืžื™ ืกืฉื”, ื•ืื ื™ ื‘ื•ื“ืง ืงืฆื” (ืฉื™ืจื•ืชื™ ืœื™ื ื•ืงืก ื•-API) ื›ื‘ืจ ื™ื•ืชืจ ืžืฉืฉ ืฉื ื™ื. ื”ืจืขื™ื•ืŸ ืœืžืืžืจ ืขืœื” ืœื™ ืœืื—ืจ ื‘ืงืฉื” ื ื•ืกืคืช ืฉืœ ื—ื‘ืจ ื‘ื•ื“ืง ืœืกืคืจ ืœื• ืžื” ื”ื•ื ื™ื›ื•ืœ ืœืงืจื•ื ืขืœ ืคืงื•ื“ื•ืช ืœื™ื ื•ืงืก ืœืคื ื™ ืจืื™ื•ืŸ. ื‘ื“ืจืš ื›ืœืœ, ืžื•ืขืžื“ ืœืชืคืงื™ื“ ืžื”ื ื“ืก QA ื ื“ืจืฉ ืœื“ืขืช ืืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืกื™ืกื™ื•ืช (ืื, ื›ืžื•ื‘ืŸ, ื”ืŸ ื›ื•ืœืœื•ืช ืขื‘ื•ื“ื” ืขื ืœื™ื ื•ืงืก), ืื‘ืœ ืื™ืš ืชื“ืข ืขืœ ืื™ืœื• ืคืงื•ื“ื•ืช ื›ื“ืื™ ืœืงืจื•ื ื‘ื–ืžืŸ ื”ื”ื›ื ื” ืœืจืื™ื•ืŸ ืื ื™ืฉ ืœืš ืžืขื˜ ืื• ืฉืื™ืŸ ื ื™ืกื™ื•ืŸ ื‘ืœื™ื ื•ืงืก?

ืœื›ืŸ, ืœืžืจื•ืช ืฉื›ื‘ืจ ื ื›ืชื‘ ืขืœ ื–ื” ื”ืจื‘ื” ืคืขืžื™ื, ื‘ื›ืœ ื–ืืช ื”ื—ืœื˜ืชื™ ืœื›ืชื•ื‘ ืžืืžืจ ื ื•ืกืฃ "ืœื™ื ื•ืงืก ืœืžืชื—ื™ืœื™ื" ื•ืœืคืจื˜ ื›ืืŸ ืืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ืฉืฆืจื™ืš ืœื“ืขืช ืœืคื ื™ ื›ืœ ืจืื™ื•ืŸ ื‘ืžื—ืœืงื” (ืื• ื—ื‘ืจื”) ืฉืžืฉืชืžืฉืช ื‘ืœื™ื ื•ืงืก. ื—ืฉื‘ืชื™ ื‘ืื™ืœื• ืคืงื•ื“ื•ืช ื•ื›ืœื™ ืขื–ืจ ื•ืขื ืื™ืœื• ืคืจืžื˜ืจื™ื ืื ื™ ืžืฉืชืžืฉ ืœืจื•ื‘, ืืกืคืชื™ ืžืฉื•ื‘ ืžื”ืงื•ืœื’ื•ืช ืฉืœื™, ื•ืจื™ื›ื–ืชื™ ืืช ื”ื›ืœ ืœืžืืžืจ ืื—ื“. ื”ืžืืžืจ ืžื—ื•ืœืง ืœ-3 ื—ืœืงื™ื: ืจืืฉื™ืช, ืžื™ื“ืข ืงืฆืจ ืขืœ ื™ืกื•ื“ื•ืช ื”-I/O ื‘ืžืกื•ืฃ ืœื™ื ื•ืงืก, ืœืื—ืจ ืžื›ืŸ ืกืงื™ืจื” ืฉืœ ื”ืคืงื•ื“ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ื‘ื™ื•ืชืจ, ื•ื”ื—ืœืง ื”ืฉืœื™ืฉื™ ืžืชืืจ ื›ื™ืฆื“ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืœื™ื ื•ืงืก.

ืœื›ืœ ืคืงื•ื“ื” ื™ืฉ โ€‹โ€‹ืืคืฉืจื•ื™ื•ืช ืจื‘ื•ืช, ื›ื•ืœืŸ ืœื ื™ื•ืคื™ืขื• ื›ืืŸ. ืืชื” ืชืžื™ื“ ื™ื›ื•ืœ ืœื”ื–ื™ืŸ `ื’ื‘ืจ <ืคืงื•ื“ื”>` ืื• `<command> --ืขื–ืจื”`ื›ื“ื™ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ื”ืฆื•ื•ืช.

ืœื“ื•ื’ืžื”:

[user@testhost ~]$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'mkdir invocation'

ืื ืคืงื•ื“ื” ื ืžืฉื›ืช ื–ืžืŸ ืจื‘ ืžื“ื™ ืœื”ืฉืœืžืชื”, ืชื•ื›ืœ ืœืกื™ื™ื ืื•ืชื” ืขืœ ื™ื“ื™ ืœื—ื™ืฆื” ื‘ืžืกื•ืฃ Ctrl + C (ืื•ืช ื ืฉืœื— ืœืชื”ืœื™ืš ืกื™ื’ื™ื ื˜).

ืงืฆืช ืขืœ ืคืœื˜ ืคืงื•ื“ื”

ื›ืืฉืจ ืชื”ืœื™ืš ืžืชื—ื™ืœ ื‘ืœื™ื ื•ืงืก, ื ื•ืฆืจื™ื 3 ื–ืจืžื™ ื ืชื•ื ื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืขื‘ื•ืจ ืื•ืชื• ืชื”ืœื™ืš: ืกื˜ื“ื™ืŸ, stdout ะธ ืกื˜ื“ืจืจ. ื”ื ืžืžื•ืกืคืจื™ื 0, 1 ื•-2 ื‘ื”ืชืืžื”. ืื‘ืœ ืขื›ืฉื™ื• ืื ื—ื ื• ืžืชืขื ื™ื™ื ื™ื stdout ื•ื‘ืžื™ื“ื” ืคื—ื•ืชื”, ืกื˜ื“ืจืจ. ืœืคื™ ื”ืฉืžื•ืช ืงืœ ืœื ื—ืฉ ืืช ื–ื” stdout ืžืฉืžืฉ ืœืคืœื˜ ื ืชื•ื ื™ื, ื• ืกื˜ื“ืจืจ โ€” ืœื”ืฆื’ืช ื”ื•ื“ืขื•ืช ืฉื’ื™ืื”. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืขืช ื”ืคืขืœืช ืคืงื•ื“ื” ื‘ืœื™ื ื•ืงืก stdout ะธ ืกื˜ื“ืจืจ ืคืœื˜ ืืช ื›ืœ ื”ืžื™ื“ืข ืœืžืกื•ืฃ, ืขื ื–ืืช, ืื ืคืœื˜ ื”ืคืงื•ื“ื” ื’ื“ื•ืœ, ื™ื™ืชื›ืŸ ืฉื™ื”ื™ื” ื ื•ื— ืœื”ืคื ื•ืช ืื•ืชื• ืœืงื•ื‘ืฅ. ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช, ืœืžืฉืœ, ื›ืš:

[user@testhost ~]$ man signal > man_signal

ืื ื ื•ืฆื™ื ืืช ืชื•ื›ืŸ ื”ืงื•ื‘ืฅ man_signal, ืื– ื ืจืื” ืฉื–ื” ื–ื”ื” ืœืžื” ืฉื”ื™ื” ืื ืคืฉื•ื˜ ื ืจื™ืฅ ืืช ื”ืคืงื•ื“ื” `ืื•ืช ื’ื‘ืจ`.

ืคืขื•ืœืช ื”ืคื ื™ื” ืžื—ื“ืฉ `>` ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืœ stdout. ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ื”ืคื ื™ื” ืžื—ื“ืฉ stdout ื‘ืžืคื•ืจืฉ: `1>`. ื‘ืื•ืคืŸ ื“ื•ืžื”, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ื ื™ืชื•ื‘ ืžื—ื“ืฉ ืกื˜ื“ืจืจ:`2>`. ืืชื” ื™ื›ื•ืœ ืœืฉืœื‘ ืคืขื•ืœื•ืช ืืœื” ื•ื›ืš ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืคืœื˜ ื”ืคืงื•ื“ื” ื”ืจื’ื™ืœ ืœื‘ื™ืŸ ืคืœื˜ ื”ื•ื“ืขืช ื”ืฉื’ื™ืื”:

[user@testhost ~]$ man signal 1> man_signal 2> man_signal_error_log

ื”ืคื ื” ืžื—ื“ืฉ ื• stdoutื• - ืกื˜ื“ืจืจ ืœืงื•ื‘ืฅ ืื—ื“ ื‘ืื•ืคืŸ ื”ื‘ื:

[user@testhost ~]$ man signal > man_signal 2>&1

ืคืขื•ืœืช ื”ืคื ื™ื” ืžื—ื“ืฉ `2> & 1` ืคื™ืจื•ืฉื• ื”ืคื ื™ื” ืžื—ื“ืฉ ืกื˜ื“ืจืจ ืœืื•ืชื• ืžืงื•ื ืœืคื™ ื”ื”ื ื—ื™ื•ืช stdout.

ื›ืœื™ ื ื•ื— ื ื•ืกืฃ ืœืขื‘ื•ื“ื” ืขื I/O (ืื• ืœื™ืชืจ ื“ื™ื•ืง, ื”ื•ื ื›ืœื™ ื ื•ื— ืœืชืงืฉื•ืจืช ื‘ื™ืŸ-ืชื”ืœื™ื›ื™ืช) ื”ื•ื ืžืงื˜ืจืช (ืื• ืžึทืกื•ึนืขึท). ืฆื™ื ื•ืจื•ืช ืžืฉืžืฉื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืคืงื•ื“ื•ืช ืžืจื•ื‘ื•ืช: stdout ื”ืคืงื•ื“ื•ืช ืžื ื•ืชื‘ื•ืช ืืœ ืกื˜ื“ื™ืŸ ื”ื‘ื, ื•ื›ืŸ ื”ืœืื” ื‘ืฉืจืฉืจืช:

[user@testhost ~]$ ps aux | grep docker | tail -n 2
root     1045894  0.0  0.0   7512  3704 ?        Sl   16:04   0:00 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/2fbfddaf91c1bb7b9a0a6f788f3505dd7266f1139ad381d5b51ec1f47e1e7b28 -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd -runtime-root /var/run/docker/runtime-runc
531      1048313  0.0  0.0 110520  2084 pts/2    S+   16:12   0:00 grep --color=auto docker

ืคืงื•ื“ื•ืช ืœื™ื ื•ืงืก ื‘ืกื™ืกื™ื•ืช

pwd

ื”ืฆื’ ืืช ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช (ื”ืขื‘ื•ื“ื”).

[user@testhost ~]$ pwd
/home/user

ื ืชื•ื ื™ื

ื”ืฆื’ ืืช ื”ืชืืจื™ืš ื•ื”ืฉืขื” ื”ื ื•ื›ื—ื™ื™ื ืฉืœ ื”ืžืขืจื›ืช.

[user@testhost ~]$ date
Mon Dec 16 13:37:07 UTC 2019
[user@testhost ~]$ date +%s
1576503430

w

ืคืงื•ื“ื” ื–ื• ืžืจืื” ืžื™ ืžื—ื•ื‘ืจ ืœืžืขืจื›ืช. ื‘ื ื•ืกืฃ, ื–ืžืŸ ืคืขื•ืœื” ื•-LA (ืžืžื•ืฆืข ืขื•ืžืก) ืžื•ืฆื’ื™ื ื’ื ื›ืŸ ืขืœ ื”ืžืกืš.

[user@testhost ~]$ w
 05:47:17 up 377 days, 17:57,  1 user,  load average: 0,00, 0,01, 0,05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user     pts/0    32.175.94.241    05:47    2.00s  0.01s  0.00s w

ls

ื”ื“ืคืก ืืช ื”ืชื•ื›ืŸ ืฉืœ ืกืคืจื™ื™ื”. ืื ืœื ืชืขื‘ื•ืจ ืืช ื”ื ืชื™ื‘, ืชื•ื›ืŸ ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช ื™ื•ืฆื’.

[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ ls
qqq
[user@testhost ~]$ ls /home/user
qqq
[user@testhost ~]$ ls /
bin  boot  cgroup  dev  etc  home  lib  lib64  local  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  swap  sys  tmp  usr  var

ื‘ืื•ืคืŸ ืื™ืฉื™, ืื ื™ ืžืจื‘ื” ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ื™ื•ืช -l (ืคื•ืจืžื˜ ืจื™ืฉื•ื ืืจื•ืš - ืคืœื˜ ืœืขืžื•ื“ื” ืขื ืžื™ื“ืข ื ื•ืกืฃ ืขืœ ืงื‘ืฆื™ื), -t (ืžื™ื•ืŸ ืœืคื™ ื–ืžืŸ ืฉื™ื ื•ื™ ืงื•ื‘ืฅ/ืกืคืจื™ื™ื”) ื• -r (ืžื™ื•ืŸ ื”ืคื•ืš - ื‘ืฉื™ืœื•ื‘ ืขื -t ื”ืงื‘ืฆื™ื ื”ืขื“ื›ื ื™ื™ื ื‘ื™ื•ืชืจ ื™ื”ื™ื• ื‘ืชื—ืชื™ืช):

[user@testhost ~]$ ls -ltr /
total 4194416
drwxr-xr-x    2 root root       4096 Jan  6  2012 srv
drwxr-xr-x    2 root root       4096 Jan  6  2012 selinux
drwxr-xr-x    2 root root       4096 Jan  6  2012 mnt
drwxr-xr-x    2 root root       4096 Jan  6  2012 media
drwx------    2 root root      16384 Oct  1  2017 lost+found
drwxr-xr-x    2 root root       4096 Oct  1  2017 local
drwxr-xr-x   13 root root       4096 Oct  1  2017 usr
drwxr-xr-x   11 root root       4096 Apr 10  2018 cgroup
drwxr-xr-x    4 root root       4096 Apr 10  2018 run
-rw-------    1 root root 4294967296 Sep 10  2018 swap
dr-xr-xr-x   10 root root       4096 Dec 13  2018 lib
drwxr-xr-x    6 root root       4096 Mar  7  2019 opt
drwxr-xr-x   20 root root       4096 Mar 19  2019 var
dr-xr-xr-x   10 root root      12288 Apr  9  2019 lib64
dr-xr-xr-x    2 root root       4096 Apr  9  2019 bin
dr-xr-xr-x    4 root root       4096 Apr  9  2019 boot
dr-xr-xr-x    2 root root      12288 Apr  9  2019 sbin
dr-xr-xr-x 3229 root root          0 Jul  2 10:19 proc
drwxr-xr-x   34 root root       4096 Oct 28 13:27 home
drwxr-xr-x   93 root root       4096 Oct 30 16:00 etc
dr-xr-x---   11 root root       4096 Nov  1 13:02 root
dr-xr-xr-x   13 root root          0 Nov 13 20:28 sys
drwxr-xr-x   16 root root       2740 Nov 26 08:55 dev
drwxrwxrwt    3 root root       4096 Nov 26 08:57 tmp

ื™ืฉื ื 2 ืฉืžื•ืช ืกืคืจื™ื•ืช ืžื™ื•ื—ื“ื•ืช: "."ื•"..". ื”ืจืืฉื•ืŸ ืื•ืžืจ ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช, ื”ืฉื ื™ ืื•ืžืจ ืกืคืจื™ื™ืช ื”ืื‘. ื”ื ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื ื•ื—ื™ื ืœืฉื™ืžื•ืฉ ื‘ืฆื•ื•ืชื™ื ืฉื•ื ื™ื, ื‘ืžื™ื•ื—ื“ ls:

[user@testhost home]$ pwd
/home
[user@testhost home]$ ls ..
bin  boot  cgroup  dev  etc  home  lib  lib64  local  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  swap  sys  tmp  usr  var
[user@testhost home]$ ls ../home/user/
qqq

ื™ืฉื ื” ื’ื ืืคืฉืจื•ืช ืฉื™ืžื•ืฉื™ืช ืœื”ืฆื’ืช ืงื‘ืฆื™ื ืžื•ืกืชืจื™ื (ื”ื—ืœ ื‘".") - -a:

[user@testhost ~]$ ls -a
.  ..  1  .bash_history  .bash_logout  .bash_profile  .bashrc  .lesshst  man_signal  man_signal_error_log  .mongorc.js  .ssh  temp  test  .viminfo

ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช -h - ืคืœื˜ ื‘ืคื•ืจืžื˜ ืงืจื™ื ืื ื•ืฉื™ (ืฉื™ืžื• ืœื‘ ืœื’ื“ืœื™ ืงื‘ืฆื™ื):

[user@testhost ~]$ ls -ltrh
total 16K
-rwxrwx--x 1 user user   31 Nov 26 11:09 temp
-rw-rw-r-- 1 user user 6.0K Dec  3 16:02 1
drwxrwxr-x 2 user user 4.0K Dec  4 10:39 test

cd

ืฉื ื” ืืช ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช.

[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ cd /home/
[user@testhost home]$ pwd
/home

ืื ืœื ืชืขื‘ื™ืจ ืืช ืฉื ื”ืกืคืจื™ื™ื” ื›ืืจื’ื•ืžื ื˜, ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ื™ืฉืžืฉ $ HOME, ื›ืœื•ืžืจ, ืกืคืจื™ื™ืช ื”ื‘ื™ืช. ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ื’ื ื ื•ื— ืœืฉื™ืžื•ืฉ `~` ื”ื™ื ืžืฉืžืขื•ืช ืชื• ืžื™ื•ื—ื“ $ HOME:

[user@testhost etc]$ pwd
/etc
[user@testhost etc]$ cd ~/test/
[user@testhost test]$ pwd
/home/user/test

mkdir

ืฆื•ืจ ืกืคืจื™ื™ื”.

[user@testhost ~]$ mkdir test
[user@testhost ~]$ ls -ltr
total 38184
-rw-rw-r-- 1 user user 39091284 Nov 22 14:14 qqq
drwxrwxr-x 2 user user     4096 Nov 26 10:29 test

ืœืคืขืžื™ื ืฆืจื™ืš ืœื™ืฆื•ืจ ืžื‘ื ื” ืกืคืจื™ื•ืช ืกืคืฆื™ืคื™: ืœืžืฉืœ ืกืคืจื™ื™ื” ื‘ืชื•ืš ืกืคืจื™ื™ื” ืฉืื™ื ื” ืงื™ื™ืžืช. ื›ื“ื™ ืœื”ื™ืžื ืข ืžื›ื ื™ืกื” ืžืกืคืจ ืคืขืžื™ื ื‘ืจืฆื™ืคื•ืช mkdir, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช -p - ื–ื” ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืืช ื›ืœ ื”ืกืคืจื™ื•ืช ื”ื—ืกืจื•ืช ื‘ื”ื™ืจืจื›ื™ื”. ื’ื ืขื ื”ืื•ืคืฆื™ื” ื”ื–ื• mkdir ืœื ื™ื—ื–ื™ืจ ืฉื’ื™ืื” ืื โ€‹โ€‹ื”ืกืคืจื™ื™ื” ืงื™ื™ืžืช.

[user@testhost ~]$ ls
qqq  test
[user@testhost ~]$ mkdir test2/subtest
mkdir: cannot create directory โ€˜test2/subtestโ€™: No such file or directory
[user@testhost ~]$ mkdir -p test2/subtest
[user@testhost ~]$ ls
qqq  test  test2
[user@testhost ~]$ ls test2/
subtest
[user@testhost ~]$ mkdir test2/subtest
mkdir: cannot create directory โ€˜test2/subtestโ€™: File exists
[user@testhost ~]$ mkdir -p test2/subtest
[user@testhost ~]$ ls test2/
subtest

rm

ืžื—ืง ืงื•ื‘ืฅ.

[user@testhost ~]$ ls
qqq  test  test2
[user@testhost ~]$ rm qqq
[user@testhost ~]$ ls
test  test2

ืืคืฉืจื•ืช -r ืžืืคืฉืจ ืœืš ืœืžื—ื•ืง ืจืงื•ืจืกื™ื‘ื™ืช ืกืคืจื™ื•ืช ืขื ื›ืœ ืชื•ื›ื ืŸ, ืืคืฉืจื•ืช -f ืžืืคืฉืจ ืœืš ืœื”ืชืขืœื ืžืฉื’ื™ืื•ืช ื‘ืขืช ืžื—ื™ืงื” (ืœื“ื•ื’ืžื”, ืœื’ื‘ื™ ืงื•ื‘ืฅ ืœื ืงื™ื™ื). ืืคืฉืจื•ื™ื•ืช ืืœื• ืžืืคืฉืจื•ืช, ื‘ืื•ืคืŸ ื’ืก, ืžื—ื™ืงื” ืžื•ื‘ื˜ื—ืช ืฉืœ ื›ืœ ื”ื”ื™ืจืจื›ื™ื” ืฉืœ ื”ืงื‘ืฆื™ื ื•ื”ืกืคืจื™ื•ืช (ืื ืœืžืฉืชืžืฉ ื™ืฉ ื–ื›ื•ื™ื•ืช ืœืขืฉื•ืช ื–ืืช), ืœื›ืŸ, ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ื‘ื–ื”ื™ืจื•ืช (ื“ื•ื’ืžื” ืฉืœ ื‘ื“ื™ื—ื” ืงืœืืกื™ืช ื”ื™ื "rm-rf /", ื‘ื ืกื™ื‘ื•ืช ืžืกื•ื™ืžื•ืช, ื™ืžื—ืง ืื•ืชืš, ืื ืœื ืืช ื›ืœ ื”ืžืขืจื›ืช, ืื– ื”ืจื‘ื” ืงื‘ืฆื™ื ื—ืฉื•ื‘ื™ื ืœื‘ื™ืฆื•ืขื™ื ืฉืœื”).

[user@testhost ~]$ ls
test  test2
[user@testhost ~]$ ls -ltr test2/
total 4
-rw-rw-r-- 1 user user    0 Nov 26 10:40 temp
drwxrwxr-x 2 user user 4096 Nov 26 10:40 temp_dir
[user@testhost ~]$ rm -rf test2
[user@testhost ~]$ ls
test

cp

ื”ืขืชืง ืงื•ื‘ืฅ ืื• ืกืคืจื™ื™ื”.

[user@testhost ~]$ ls
temp  test
[user@testhost ~]$ cp temp temp_clone
[user@testhost ~]$ ls
temp  temp_clone  test

ื’ื ืœืคืงื•ื“ื” ื”ื–ื• ื™ืฉ ืืคืฉืจื•ื™ื•ืช -r ะธ -f, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉื”ื”ื™ืจืจื›ื™ื” ืฉืœ ืกืคืจื™ื•ืช ื•ืชื™ืงื™ื•ืช ืžื•ืขืชืงืช ืœืžื™ืงื•ื ืื—ืจ.

mv

ื”ืขื‘ืจ ืื• ืฉื ื” ืฉื ืฉืœ ืงื•ื‘ืฅ ืื• ืกืคืจื™ื”.

[user@testhost ~]$ ls -ltr
total 4
drwxrwxr-x 2 user user 4096 Nov 26 10:29 test
-rw-rw-r-- 1 user user    0 Nov 26 10:45 temp
-rw-rw-r-- 1 user user    0 Nov 26 10:46 temp_clone
[user@testhost ~]$ ls test
[user@testhost ~]$ mv test test_renamed
[user@testhost ~]$ mv temp_clone test_renamed/
[user@testhost ~]$ ls
temp  test_renamed
[user@testhost ~]$ ls test_renamed/
temp_clone

ื—ืชื•ืœ

ื”ื“ืคืก ืืช ื”ืชื•ื›ืŸ ืฉืœ ืงื•ื‘ืฅ (ืื• ืงื‘ืฆื™ื).

[user@testhost ~]$ cat temp
Content of a file.
Lalalala...

ื›ื“ืื™ ืœืฉื™ื ืœื‘ ื’ื ืœืคืงื•ื“ื•ืช ืจืืฉ (ืชึฐืคื•ึผืงึธื” n ืฉื•ืจื•ืช ืื• ื‘ืชื™ื ืจืืฉื•ื ื•ืช ืฉืœ ื”ืงื•ื‘ืฅ) ื• ื–ื ื‘ (ืขื•ื“ ืขืœื™ื” ื‘ื”ืžืฉืš).

ื–ื ื‘

ืคืœื˜ n ื”ืฉื•ืจื•ืช ืื• ื”ื‘ื™ื™ื˜ื™ื ื”ืื—ืจื•ื ื™ื ืฉืœ ื”ืงื•ื‘ืฅ.

[user@testhost ~]$ tail -1 temp
Lalalala...

ื”ืืคืฉืจื•ืช ืฉื™ืžื•ืฉื™ืช ืžืื•ื“ -f - ื–ื” ืžืืคืฉืจ ืœืš ืœื”ืฆื™ื’ ื ืชื•ื ื™ื ื—ื“ืฉื™ื ื‘ืงื•ื‘ืฅ ื‘ื–ืžืŸ ืืžืช.

ืคื—ื•ืช

ืœืคืขืžื™ื ืงื•ื‘ืฅ ื”ื˜ืงืกื˜ ื’ื“ื•ืœ ืžื“ื™ ื•ืœื ื ื•ื— ืœื”ืฆื™ื’ ืื•ืชื• ืขื ื”ืคืงื•ื“ื” ื—ืชื•ืœ. ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ ืœืคืชื•ื— ืื•ืชื• ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืคื—ื•ืช: ื”ืงื•ื‘ืฅ ื™ื™ืฆื ื‘ื—ืœืงื™ื; ื ื™ื•ื•ื˜ ื“ืจืš ื—ืœืงื™ื ืืœื”, ื—ื™ืคื•ืฉ ื•ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืคืฉื•ื˜ื” ืื—ืจืช ื–ืžื™ื ื™ื.

[user@testhost ~]$ less temp

ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ื’ื ื ื•ื— ืœืฉื™ืžื•ืฉ ืคื—ื•ืช ืขื ืžืกื•ืข (ืžืงื˜ืจืช):

[user@testhost ~]$ grep "ERROR" /tmp/some.log | less

ps

ืจืฉื•ื ืชื”ืœื™ื›ื™ื.

[user@testhost ~]$ ps
    PID TTY          TIME CMD
 761020 pts/2    00:00:00 bash
 809720 pts/2    00:00:00 ps

ืื ื™ ืขืฆืžื™ ืžืฉืชืžืฉ ื‘ื“ืจืš ื›ืœืœ ื‘ืืคืฉืจื•ื™ื•ืช BSD "aux" - ื”ืฆื’ ืืช ื›ืœ ื”ืชื”ืœื™ื›ื™ื ื‘ืžืขืจื›ืช (ืžื›ื™ื•ื•ืŸ ืฉื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืชื”ืœื™ื›ื™ื ืจื‘ื™ื, ื”ืฆื’ืชื™ ืจืง ืืช 5 ื”ืจืืฉื•ื ื™ื ืžื”ื ื‘ืืžืฆืขื•ืช ื”ืฆื™ื ื•ืจ (ืžืงื˜ืจืช) ื•ืฆื•ื•ืช ืจืืฉ):

[user@testhost ~]$ ps aux | head -5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  19692  2600 ?        Ss   Jul02   0:10 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul02   0:03 [kthreadd]
root           4  0.0  0.0      0     0 ?        I<   Jul02   0:00 [kworker/0:0H]
root           6  0.0  0.0      0     0 ?        I<   Jul02   0:00 [mm_percpu_wq]

ืจื‘ื™ื ืžืฉืชืžืฉื™ื ื’ื ื‘ืืคืฉืจื•ื™ื•ืช BSD "axjf", ื”ืžืืคืฉืจ ืœืš ืœื”ืฆื™ื’ ืืช ืขืฅ ื”ืชื”ืœื™ืš (ื›ืืŸ ื”ืกืจืชื™ ื—ืœืง ืžื”ืคืœื˜ ืœืฆื•ืจืš ื”ื“ื’ืžื”):

[user@testhost ~]$ ps axjf
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
      0       2       0       0 ?             -1 S        0   0:03 [kthreadd]
      2       4       0       0 ?             -1 I<       0   0:00  _ [kworker/0:0H]
      2       6       0       0 ?             -1 I<       0   0:00  _ [mm_percpu_wq]
      2       7       0       0 ?             -1 S        0   4:08  _ [ksoftirqd/0]
...
...
...
      1    4293    4293    4293 tty6        4293 Ss+      0   0:00 /sbin/mingetty /dev/tty6
      1  532967  532964  532964 ?             -1 Sl     495   0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
 532967  532970  532964  532964 ?             -1 Sl     495 803:06  _ /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
      1  537162  533357  532322 ?             -1 Sl       0 5067:43 /usr/bin/dockerd --default-ulimit nofile=262144:262144 --dns=172.17.0.1
 537162  537177  537177  537177 ?             -1 Ssl      0 4649:28  _ docker-containerd --config /var/run/docker/containerd/containerd.toml
 537177  537579  537579  537177 ?             -1 Sl       0   4:48  |   _ docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0ee89b20deb3cf08648cd92e1f3e3c661ccffef7a0971
 537579  537642  537642  537642 ?             -1 Ss    1000  32:11  |   |   _ /usr/bin/python /usr/bin/supervisord -c /etc/supervisord/api.conf
 537642  539764  539764  537642 ?             -1 S     1000   0:00  |   |       _ sh -c echo "READY"; while read -r line; do echo "$line"; supervisorctl shutdown; done
 537642  539767  539767  537642 ?             -1 S     1000   5:09  |   |       _ php-fpm: master process (/etc/php73/php-fpm.conf)
 539767  783097  539767  537642 ?             -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
 539767  783131  539767  537642 ?             -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
 539767  783185  539767  537642 ?             -1 S     1000   0:00  |   |       |   _ php-fpm: pool test
...
...
...

ืœืคืงื•ื“ื” ื–ื• ื™ืฉ ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช ืฉื•ื ื•ืช, ืื– ืื ืืชื” ืžืฉืชืžืฉ ื‘ื” ื‘ืื•ืคืŸ ืคืขื™ืœ, ืื ื™ ืžืžืœื™ืฅ ืœืš ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“. ื‘ืจื•ื‘ ื”ืžืงืจื™ื, ื–ื” ืžืกืคื™ืง ืจืง ืœื“ืขืช "ื .ื‘ ืœ".

ืœื”ืจื•ื’

ืฉืœื— ืื•ืช ืœืชื”ืœื™ืš. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื”ืื•ืช ื ืฉืœื— ื˜ื•ื•ื— ื™ืขื“, ืžื” ืฉืžืกื™ื™ื ืืช ื”ืชื”ืœื™ืš.

[user@testhost ~]$ ps ux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
531      1027147  0.0  0.0 119956  4260 ?        S    14:51   0:00 sshd: user@pts/1
531      1027149  0.0  0.0 115408  3396 pts/1    Ss   14:51   0:00 -bash
531      1027170  0.0  0.0 119956  4136 ?        R    14:51   0:00 sshd: user@pts/2
531      1027180  0.0  0.0 115408  3564 pts/2    Ss   14:51   0:00 -bash
531      1033727  0.0  0.0 107960   708 pts/1    S+   15:17   0:00 sleep 300
531      1033752  0.0  0.0 117264  2604 pts/2    R+   15:17   0:00 ps ux
[user@testhost ~]$ kill 1033727
[user@testhost ~]$ ps ux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
531      1027147  0.0  0.0 119956  4260 ?        S    14:51   0:00 sshd: user@pts/1
531      1027149  0.0  0.0 115408  3396 pts/1    Ss+  14:51   0:00 -bash
531      1027170  0.0  0.0 119956  4136 ?        R    14:51   0:00 sshd: user@pts/2
531      1027180  0.0  0.0 115408  3564 pts/2    Ss   14:51   0:00 -bash
531      1033808  0.0  0.0 117268  2492 pts/2    R+   15:17   0:00 ps ux

ืžื›ื™ื•ื•ืŸ ืฉืœืชื”ืœื™ืš ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื˜ืคืœื™ ืื•ืชื•ืช, ืœื”ืจื•ื’ ืœื ืชืžื™ื“ ืžื‘ื™ื ืœืชื•ืฆืื” ื”ืžืฆื•ืคื” - ืกื™ื•ื ืžื™ื™ื“ื™ ืฉืœ ื”ืชื”ืœื™ืš. ื›ื“ื™ "ืœื”ืจื•ื’" ืชื”ืœื™ืš ื‘ื•ื•ื“ืื•ืช, ืืชื” ืฆืจื™ืš ืœืฉืœื•ื— ืื•ืช ืœืชื”ืœื™ืš ืกื™ื’ื™ืœ. ืขื ื–ืืช, ื–ื” ื™ื›ื•ืœ ืœื”ื•ื‘ื™ืœ ืœืื•ื‘ื“ืŸ ื ืชื•ื ื™ื (ืœื“ื•ื’ืžื”, ืื ื”ืชื”ืœื™ืš ืฆืจื™ืš ืœืฉืžื•ืจ ืžื™ื“ืข ืžืกื•ื™ื ื‘ื“ื™ืกืง ืœืคื ื™ ืกื™ื•ื), ืœื›ืŸ ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื–ื• ื‘ื–ื”ื™ืจื•ืช. ืžืกืคืจ ืื•ืช ืกื™ื’ื™ืœ - 9, ืื– ื”ื’ืจืกื” ื”ืงืฆืจื” ืฉืœ ื”ืคืงื•ื“ื” ื ืจืื™ืช ื›ืš:

[user@testhost ~]$ ps ux | grep sleep
531      1034930  0.0  0.0 107960   636 pts/1    S+   15:21   0:00 sleep 300
531      1034953  0.0  0.0 110516  2104 pts/2    S+   15:21   0:00 grep --color=auto sleep
[user@testhost ~]$ kill -9 1034930
[user@testhost ~]$ ps ux | grep sleep
531      1035004  0.0  0.0 110516  2092 pts/2    S+   15:22   0:00 grep --color=auto sleep

ื‘ื ื•ืกืฃ ืœืืœื• ืฉื”ื•ื–ื›ืจื• ื˜ื•ื•ื— ื™ืขื“ ะธ ืกื™ื’ื™ืœ ื™ืฉื ื ืขื•ื“ ืื•ืชื•ืช ืจื‘ื™ื ื•ืฉื•ื ื™ื; ืจืฉื™ืžื” ืฉืœื”ื ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืงืœื•ืช ื‘ืื™ื ื˜ืจื ื˜. ื•ืืœ ืชืฉื›ื— ืฉื”ืื•ืชื•ืช ืกื™ื’ื™ืœ ะธ ื”ืชื—ื ื” ื”ื‘ืื” ืœื ื ื™ืชืŸ ืœื™ื™ืจื˜ ืื• ืœื”ืชืขืœื.

ืคื™ื ื’

ืฉืœื— ื—ื‘ื™ืœืช ICMP ืœืžืืจื— ECHO_REQUEST.

[user@testhost ~]$ ping google.com
PING google.com (172.217.15.78) 56(84) bytes of data.
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=1 ttl=47 time=1.85 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=2 ttl=47 time=1.48 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=3 ttl=47 time=1.45 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=4 ttl=47 time=1.46 ms
64 bytes from iad23s63-in-f14.1e100.net (172.217.15.78): icmp_seq=5 ttl=47 time=1.45 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.453/1.541/1.850/0.156 ms

ื‘ืจื™ืจืช ืžื—ื“ืœ ืคื™ื ื’ ืขื•ื‘ื“ ืขื“ ืฉื”ื•ื ื ืกื’ืจ ื‘ืื•ืคืŸ ื™ื“ื ื™. ืœื›ืŸ ื”ืืคืฉืจื•ืช ืขืฉื•ื™ื” ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ืช -c - ืžืกืคืจ ื”ื—ื‘ื™ืœื•ืช ืœืื—ืจ ื”ืฉืœื™ื—ื” ืคื™ื ื’ ื™ืฉืœื™ื ืœื‘ื“. ืืคืฉืจื•ืช ื ื•ืกืคืช ืฉืื ื™ ืžืฉืชืžืฉ ื‘ื” ืœืคืขืžื™ื ื”ื™ื -i, ื”ืžืจื•ื•ื— ื‘ื™ืŸ ืฉืœื™ื—ืช ืžื ื•ืช.

[user@testhost ~]$ ping -c 3 -i 5 google.com
PING google.com (172.217.5.238) 56(84) bytes of data.
64 bytes from iad30s07-in-f238.1e100.net (172.217.5.238): icmp_seq=1 ttl=47 time=1.55 ms
64 bytes from iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=2 ttl=47 time=1.17 ms
64 bytes from iad30s07-in-f14.1e100.net (172.217.5.238): icmp_seq=3 ttl=47 time=1.16 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10006ms
rtt min/avg/max/mdev = 1.162/1.295/1.551/0.181 ms

ssh

ืœืงื•ื— OpenSSH SSH ืžืืคืฉืจ ืœืš ืœื”ืชื—ื‘ืจ ืœืžืืจื— ืžืจื•ื—ืง.

MacBook-Pro-User:~ user$ ssh [email protected]
Last login: Tue Nov 26 11:27:39 2019 from another_host
[user@testhost ~]$ hostname
testhost

ื™ืฉื ื ื ื™ื•ืื ืกื™ื ืจื‘ื™ื ื‘ืฉื™ืžื•ืฉ ื‘-SSH, ื•ื’ื ืœืœืงื•ื— ื”ื–ื” ื™ืฉ ืžืกืคืจ ืจื‘ ืฉืœ ื™ื›ื•ืœื•ืช, ื›ืš ืฉืื ืชืจืฆื• (ืื• ืชืฆื˜ืจื›ื•) ืชื•ื›ืœื• ืœืงืจื•ื ืขืœื™ื• ื™ื•ืชืจ ืคืจื˜ื™ื.

SCP

ื”ืขืชืง ืงื‘ืฆื™ื ื‘ื™ืŸ ืžืืจื—ื™ื (ืœืฉื™ืžื•ืฉ ื–ื” ssh).

[user@testhost ~]$ pwd
/home/user
[user@testhost ~]$ ls
temp  test_renamed
[user@testhost ~]$ exit
logout
Connection to 11.11.22.22 closed.
MacBook-Pro-Aleksandr:~ user$ scp [email protected]:/home/user/temp Downloads/
temp                                                                                                                                                                                                        100%   31     0.2KB/s   00:00
MacBook-Pro-Aleksandr:~ user$ cat Downloads/temp
Content of a file.
Lalalala...

rsync

ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœืกื ื›ืจืŸ ืกืคืจื™ื•ืช ื‘ื™ืŸ ืžืืจื—ื™ื rsync (-a - ืžืฆื‘ ืืจื›ื™ื•ืŸ, ืžืืคืฉืจ ืœืš ืœื”ืขืชื™ืง ืืช ื›ืœ ื”ืชื•ื›ืŸ ืฉืœ ื”ืกืคืจื™ื™ื” "ื›ืžื• ืฉื”ื•ื", -v - ืคืœื˜ ืœืžืกื•ืฃ ืฉืœ ืžื™ื“ืข ื ื•ืกืฃ):

MacBook-Pro-User:~ user$ ls Downloads/user
ls: Downloads/user: No such file or directory
MacBook-Pro-User:~ user$ rsync -av user@testhost:/home/user Downloads
receiving file list ... done
user/
user/.bash_history
user/.bash_logout
user/.bash_profile
user/.bashrc
user/.lesshst
user/.mongorc.js
user/.viminfo
user/1
user/man_signal
user/man_signal_error_log
user/temp
user/.ssh/
user/.ssh/authorized_keys
user/test/
user/test/created_today
user/test/temp_clone

sent 346 bytes  received 29210 bytes  11822.40 bytes/sec
total size is 28079  speedup is 0.95
MacBook-Pro-User:~ user$ ls -a Downloads/user
.                    .bash_history        .bash_profile        .lesshst             .ssh                 1                    man_signal_error_log test
..                   .bash_logout         .bashrc              .mongorc.js          .viminfo             man_signal           temp

ื”ื“

ื”ืฆื’ ืฉื•ืจืช ื˜ืงืกื˜.

[user@testhost ~]$ echo "Hello"
Hello

ืืคืฉืจื•ื™ื•ืช ืฉื›ื“ืื™ ืœืฉืงื•ืœ ื›ืืŸ -n - ืื™ืŸ ืœืฆืจืฃ ืืช ื”ืฉื•ืจื” ืขื ืžืขื‘ืจ ืฉื•ืจื” ื‘ืกื•ืฃ, ื• -e - ืืคืฉืจ ื‘ืจื™ื—ื” ืžืคืจืฉื ื•ืช ื‘ืืžืฆืขื•ืช "".

[user@testhost ~]$ echo "tHellon"
tHellon
[user@testhost ~]$ echo -n "tHellon"
tHellon[user@testhost ~]$
[user@testhost ~]$ echo -ne "tHellon"
	Hello

ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฆื™ื’ ืืช ื”ืขืจื›ื™ื ืฉืœ ืžืฉืชื ื™ื ื‘ืืžืฆืขื•ืช ืคืงื•ื“ื” ื–ื•. ืœื“ื•ื’ืžื”, ื‘ืœื™ื ื•ืงืก ืงื•ื“ ื”ื™ืฆื™ืื” ืฉืœ ื”ืคืงื•ื“ื” ื”ืื—ืจื•ื ื” ืฉื”ื•ืฉืœืžื” ืžืื•ื—ืกืŸ ื‘ืžืฉืชื ื” ืžื™ื•ื—ื“ $?, ื•ื‘ื“ืจืš ื–ื• ืชื•ื›ืœ ืœื’ืœื•ืช ื‘ื“ื™ื•ืง ืื™ื–ื• ืฉื’ื™ืื” ืื™ืจืขื” ื‘ื™ื™ืฉื•ื ื”ืื—ืจื•ืŸ ื”ืคื•ืขืœ:

[user@testhost ~]$ ls    # ะพัˆะธะฑะบะธ ะฝะต ะฑัƒะดะตั‚
1  man_signal  man_signal_error_log  temp  test
[user@testhost ~]$ echo $?    # ะฟะพะปัƒั‡ะธะผ 0 โ€” ะพัˆะธะฑะบะธ ะฝะต ะฑั‹ะปะพ
0
[user@testhost ~]$ ls qwerty    # ะฑัƒะดะตั‚ ะพัˆะธะฑะบะฐ
ls: cannot access qwerty: No such file or directory
[user@testhost ~]$ echo $?    # ะฟะพะปัƒั‡ะธะผ 2 โ€” Misuse of shell builtins (according to Bash documentation)
2
[user@testhost ~]$ echo $?    # ะฟะพัะปะตะดะฝะธะน echo ะพั‚ั€ะฐะฑะพั‚ะฐะป ะฑะตะท ะพัˆะธะฑะพะบ, ะฟะพะปัƒั‡ะธะผ 0
0

Telnet

ืœืงื•ื— ืขื‘ื•ืจ ืคืจื•ื˜ื•ืงื•ืœ TELNET. ืžืฉืžืฉ ืœืชืงืฉื•ืจืช ืขื ืžืืจื— ืื—ืจ.

[user@testhost ~]$ telnet example.com 80
Trying 93.184.216.34...
Connected to example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Nov 2019 11:59:18 GMT
Etag: "3147526947+gzip+ident"
Expires: Tue, 03 Dec 2019 11:59:18 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (dcb/7F3B)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

... ะทะดะตััŒ ะฑั‹ะปะพ ั‚ะตะปะพ ะพั‚ะฒะตั‚ะฐ, ะบะพั‚ะพั€ะพะต ั ะฒั‹ั€ะตะทะฐะป ั€ัƒะบะฐะผะธ ...

ืื ืืชื” ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ืคืจื•ื˜ื•ืงื•ืœ TLS (ืชืŸ ืœื™ ืœื”ื–ื›ื™ืจ ืœืš ืฉ-SSL ื›ื‘ืจ ืžื–ืžืŸ ืžื™ื•ืฉืŸ), ืื– Telnet ืœื ืžืชืื™ื ืœืžื˜ืจื•ืช ืืœื•. ืื‘ืœ ื”ืœืงื•ื— ื™ื‘ื•ื OpenSSL:

ื“ื•ื’ืžื” ืœืฉื™ืžื•ืฉ ื‘-openssl ืขื ืคืœื˜ืช ืชื’ื•ื‘ื” ืœื‘ืงืฉืช GET

[user@testhost ~]$ openssl s_client -connect example.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
verify return:1
depth=0 C = US, ST = California, L = Los Angeles, O = Internet Corporation for Assigned Names and Numbers, OU = Technology, CN = www.example.org
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org
   i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
 1 s:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHQDCCBiigAwIBAgIQD9B43Ujxor1NDyupa2A4/jANBgkqhkiG9w0BAQsFADBN
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTgxMTI4MDAwMDAwWhcN
MjAxMjAyMTIwMDAwWjCBpTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju
aWExFDASBgNVBAcTC0xvcyBBbmdlbGVzMTwwOgYDVQQKEzNJbnRlcm5ldCBDb3Jw
b3JhdGlvbiBmb3IgQXNzaWduZWQgTmFtZXMgYW5kIE51bWJlcnMxEzARBgNVBAsT
ClRlY2hub2xvZ3kxGDAWBgNVBAMTD3d3dy5leGFtcGxlLm9yZzCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANDwEnSgliByCGUZElpdStA6jGaPoCkrp9vV
rAzPpXGSFUIVsAeSdjF11yeOTVBqddF7U14nqu3rpGA68o5FGGtFM1yFEaogEv5g
rJ1MRY/d0w4+dw8JwoVlNMci+3QTuUKf9yH28JxEdG3J37Mfj2C3cREGkGNBnY80
eyRJRqzy8I0LSPTTkhr3okXuzOXXg38ugr1x3SgZWDNuEaE6oGpyYJIBWZ9jF3pJ
QnucP9vTBejMh374qvyd0QVQq3WxHrogy4nUbWw3gihMxT98wRD1oKVma1NTydvt
hcNtBfhkp8kO64/hxLHrLWgOFT/l4tz8IWQt7mkrBHjbd2XLVPkCAwEAAaOCA8Ew
ggO9MB8GA1UdIwQYMBaAFA+AYRyCMWHVLyjnjUY4tCzhxtniMB0GA1UdDgQWBBRm
mGIC4AmRp9njNvt2xrC/oW2nvjCBgQYDVR0RBHoweIIPd3d3LmV4YW1wbGUub3Jn
ggtleGFtcGxlLmNvbYILZXhhbXBsZS5lZHWCC2V4YW1wbGUubmV0ggtleGFtcGxl
Lm9yZ4IPd3d3LmV4YW1wbGUuY29tgg93d3cuZXhhbXBsZS5lZHWCD3d3dy5leGFt
cGxlLm5ldDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMGsGA1UdHwRkMGIwL6AtoCuGKWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNv
bS9zc2NhLXNoYTItZzYuY3JsMC+gLaArhilodHRwOi8vY3JsNC5kaWdpY2VydC5j
b20vc3NjYS1zaGEyLWc2LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgG
CCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAEC
AjB8BggrBgEFBQcBAQRwMG4wJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
ZXJ0LmNvbTBGBggrBgEFBQcwAoY6aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t
L0RpZ2lDZXJ0U0hBMlNlY3VyZVNlcnZlckNBLmNydDAMBgNVHRMBAf8EAjAAMIIB
fwYKKwYBBAHWeQIEAgSCAW8EggFrAWkAdwCkuQmQtBhYFIe7E6LMZ3AKPDWYBPkb
37jjd80OyA3cEAAAAWdcMZVGAAAEAwBIMEYCIQCEZIG3IR36Gkj1dq5L6EaGVycX
sHvpO7dKV0JsooTEbAIhALuTtf4wxGTkFkx8blhTV+7sf6pFT78ORo7+cP39jkJC
AHYAh3W/51l8+IxDmV+9827/Vo1HVjb/SrVgwbTq/16ggw8AAAFnXDGWFQAABAMA
RzBFAiBvqnfSHKeUwGMtLrOG3UGLQIoaL3+uZsGTX3MfSJNQEQIhANL5nUiGBR6g
l0QlCzzqzvorGXyB/yd7nttYttzo8EpOAHYAb1N2rDHwMRnYmQCkURX/dxUcEdkC
wQApBo2yCJo32RMAAAFnXDGWnAAABAMARzBFAiEA5Hn7Q4SOyqHkT+kDsHq7ku7z
RDuM7P4UDX2ft2Mpny0CIE13WtxJAUr0aASFYZ/XjSAMMfrB0/RxClvWVss9LHKM
MA0GCSqGSIb3DQEBCwUAA4IBAQBzcIXvQEGnakPVeJx7VUjmvGuZhrr7DQOLeP4R
8CmgDM1pFAvGBHiyzvCH1QGdxFl6cf7wbp7BoLCRLR/qPVXFMwUMzcE1GLBqaGZM
v1Yh2lvZSLmMNSGRXdx113pGLCInpm/TOhfrvr0TxRImc8BdozWJavsn1N2qdHQu
N+UBO6bQMLCD0KHEdSGFsuX6ZwAworxTg02/1qiDu7zW7RyzHvFYA4IAjpzvkPIa
X6KjBtpdvp/aXabmL95YgBjT8WJ7pqOfrqhpcmOBZa6Cg6O1l4qbIFH/Gj9hQB5I
0Gs4+eH6F9h3SojmPTYkT+8KuZ9w84Mn+M8qBXUQoYoKgIjN
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Los Angeles/O=Internet Corporation for Assigned Names and Numbers/OU=Technology/CN=www.example.org
issuer=/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 4643 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 91950DC50FADB57BF026D2661E6CFAA1F522E5CA60D2310E106EE0E0FD6E70BD
    Session-ID-ctx:
    Master-Key: 704E9145253EEB4E9DC47E3DC6725D296D4A470EA296D54F71D65E74EAC09EB096EA1305CBEDD9E7020B8F72FD2B68A5
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 68 84 4e 77 be e3 f5 00-49 c5 44 40 53 4d b9 61   [email protected]
    0010 - c9 fe df e4 05 51 d0 53-ae cf 89 4c b6 ef 6c 9e   .....Q.S...L..l.
    0020 - fe 12 9a f0 e8 e5 4e 87-42 89 ac af ca e5 4a 85   ......N.B.....J.
    0030 - 38 08 26 e3 22 89 08 b5-62 c0 8b 7e b8 05 d3 54   8.&."...b..~...T
    0040 - 8c 24 91 a7 b4 4f 79 ad-36 59 7c 69 2d e5 7f 62   .$...Oy.6Y|i-..b
    0050 - f6 73 a3 8b 92 63 c1 e3-df 78 ba 8c 5a cc 82 50   .s...c...x..Z..P
    0060 - 33 4e 13 4b 10 e4 97 31-cc b4 13 65 45 60 3e 13   3N.K...1...eE`>.
    0070 - ac 9e b1 bb 4b 18 d9 16-ea ce f0 9b 5b 0c 8b bf   ....K.......[...
    0080 - fd 78 74 a0 1a ef c2 15-2a 0a 14 8d d1 3f 52 7a   .xt.....*....?Rz
    0090 - 12 6b c7 81 15 c4 c4 af-7e df c2 20 a8 dd 4b 93   .k......~.. ..K.

    Start Time: 1574769867
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
GET / HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Nov 2019 12:04:38 GMT
Etag: "3147526947+ident"
Expires: Tue, 03 Dec 2019 12:04:38 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (dcb/7EC8)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช ื‘ืœื™ื ื•ืงืก

ืฉื ื” ื‘ืขืœื™ื ืฉืœ ืงื•ื‘ืฅ

ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ื”ื‘ืขืœื™ื ืฉืœ ืงื•ื‘ืฅ ืื• ืกืคืจื™ื™ื” ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” chown:

[user@testhost ~]$ chown user:user temp
[user@testhost ~]$ ls -l temp
-rw-rw-r-- 1 user user 31 Nov 26 11:09 temp

ื™ืฉ ืœืชืช ืœืคืจืžื˜ืจ ืœืคืงื•ื“ื” ื–ื• ืืช ื”ื‘ืขืœื™ื ื•ื”ืงื‘ื•ืฆื” ื”ื—ื“ืฉื™ื (ืื•ืคืฆื™ื•ื ืœื™), ืžื•ืคืจื“ื™ื ื‘ืืžืฆืขื•ืช ื ืงื•ื“ืชื™ื™ื. ื›ืžื• ื›ืŸ, ื‘ืขืช ืฉื™ื ื•ื™ ื‘ืขืœื™ื ืฉืœ ืกืคืจื™ื™ื”, ื”ืืคืฉืจื•ืช ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ืช -R - ืื– ื”ื‘ืขืœื™ื ื™ืฉืชื ื• ืขื‘ื•ืจ ื›ืœ ืชื•ื›ืŸ ื”ืกืคืจื™ื™ื”.

ืฉื ื” ื”ืจืฉืื•ืช ืงื•ื‘ืฅ

ื ื™ืชืŸ ืœืคืชื•ืจ ื‘ืขื™ื” ื–ื• ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” chmod. ื›ื“ื•ื’ืžื”, ืืชืŸ ืืช ื”ื’ื“ืจืช ื”ื”ืจืฉืื” "ืœื‘ืขืœื™ื ืžื•ืชืจ ืœืงืจื•ื, ืœื›ืชื•ื‘ ื•ืœื‘ืฆืข, ืœืงื‘ื•ืฆื” ืžื•ืชืจ ืœืงืจื•ื ื•ืœื›ืชื•ื‘, ืœื›ืœ ื”ืฉืืจ ืืกื•ืจ ื›ืœื•ื":

[user@testhost ~]$ ls -l temp
-rw-rw-r-- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod 760 temp
[user@testhost ~]$ ls -l temp
-rwxrw---- 1 user user 31 Nov 26 11:09 temp

ื”-7 ื”ืจืืฉื•ืŸ (ื–ื”ื• 0b111 ื‘ื™ื™ืฆื•ื’ ื”ืกื™ื‘ื™ื•ืช) ื‘ืคืจืžื˜ืจ ืคื™ืจื•ืฉื• "ื›ืœ ื”ื–ื›ื•ื™ื•ืช ืœื‘ืขืœื™ื", 6 ื”ืฉื ื™ (ื–ื”ื• 0b110 ื‘ื™ื™ืฆื•ื’ ื”ืกื™ื‘ื™ื•ืช) ืคื™ืจื•ืฉื• "ืœืงืจื•ื ื•ืœื›ืชื•ื‘", ื•-0 ืœื ืื•ืžืจ ื›ืœื•ื ืขื‘ื•ืจ ื”ืฉืืจ . ืžืกื™ื›ืช ืกื™ื‘ื™ื•ืช ืžื•ืจื›ื‘ืช ืžืฉืœื•ืฉื” ื‘ื™ื˜ื™ื: ื”ื‘ื™ื˜ ื”ืคื—ื•ืช ืžืฉืžืขื•ืชื™ ("ื™ืžื ื™") ืื—ืจืื™ ืœื‘ื™ืฆื•ืข, ื”ื‘ื™ื˜ ื”ื‘ื ("ื”ืืžืฆืขื™") ืžื™ื•ืขื“ ืœื›ืชื™ื‘ื”, ื•ื”ื‘ื™ื˜ ื”ืžืฉืžืขื•ืชื™ ื‘ื™ื•ืชืจ ("ื”ืฉืžืืœื™") ื”ื•ื ืœืงืจื™ืื”.
ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ื’ื“ื™ืจ ื”ืจืฉืื•ืช ื‘ืืžืฆืขื•ืช ืชื•ื•ื™ื ืžื™ื•ื—ื“ื™ื (ืชื—ื‘ื™ืจ ื–ื›ืจื•ืŸ). ืœื“ื•ื’ืžื”, ื”ื“ื•ื’ืžื” ื”ื‘ืื” ืžืกื™ืจื” ืชื—ื™ืœื” ืืช ื–ื›ื•ื™ื•ืช ื”ื”ืคืขืœื” ืขื‘ื•ืจ ื”ืžืฉืชืžืฉ ื”ื ื•ื›ื—ื™ ื•ืœืื—ืจ ืžื›ืŸ ืžืฉื ื” ืื•ืชืŸ ื‘ื—ื–ืจื”:

[user@testhost ~]$ ls -l temp
-rwxrw---- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod -x temp
[user@testhost ~]$ ls -l temp
-rw-rw---- 1 user user 31 Nov 26 11:09 temp
[user@testhost ~]$ chmod +x temp
[user@testhost ~]$ ls -l temp
-rwxrwx--x 1 user user 31 Nov 26 11:09 temp

ืœืคืงื•ื“ื” ื”ื–ื• ื™ืฉ ืฉื™ืžื•ืฉื™ื ืจื‘ื™ื, ืื– ืื ื™ ืžืžืœื™ืฅ ืœืš ืœืงืจื•ื ืขืœื™ื” ื™ื•ืชืจ (ื‘ืžื™ื•ื—ื“ ืขืœ ืชื—ื‘ื™ืจ ื”ืืžื ืžื•ื ื™, ืœืžืฉืœ, ื›ืืŸ).

ื”ื“ืคืก ืืช ื”ืชื•ื›ืŸ ืฉืœ ืงื•ื‘ืฅ ื‘ื™ื ืืจื™

ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช hexdump. ืœื”ืœืŸ ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ื•.

[user@testhost ~]$ cat temp
Content of a file.
Lalalala...
[user@testhost ~]$ hexdump -c temp
0000000   C   o   n   t   e   n   t       o   f       a       f   i   l
0000010   e   .  n   L   a   l   a   l   a   l   a   .   .   .  n
000001f
[user@testhost ~]$ hexdump -x temp
0000000    6f43    746e    6e65    2074    666f    6120    6620    6c69
0000010    2e65    4c0a    6c61    6c61    6c61    2e61    2e2e    000a
000001f
[user@testhost ~]$ hexdump -C temp
00000000  43 6f 6e 74 65 6e 74 20  6f 66 20 61 20 66 69 6c  |Content of a fil|
00000010  65 2e 0a 4c 61 6c 61 6c  61 6c 61 2e 2e 2e 0a     |e..Lalalala....|
0000001f

ื‘ืืžืฆืขื•ืช ื›ืœื™ ื–ื”, ืืชื” ื™ื›ื•ืœ ืœื”ื•ืฆื™ื ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ื™ื ืื—ืจื™ื, ืืš ืืœื• ื”ืŸ ื”ืืคืฉืจื•ื™ื•ืช ื”ืฉื™ืžื•ืฉื™ื•ืช ื‘ื™ื•ืชืจ ืœืฉื™ืžื•ืฉ ื‘ื•.

ืœื—ืคืฉ ืชื™ืงื™ื•ืช

ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืงื•ื‘ืฅ ืœืคื™ ื—ืœืง ืžื”ืฉื ืฉืœื• ื‘ืขืฅ ื”ืกืคืจื™ื•ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืœืžืฆื•ื:

[user@testhost ~]$ find test_dir/ -name "*le*"
test_dir/file_1
test_dir/file_2
test_dir/subdir/file_3

ืืคืฉืจื•ื™ื•ืช ื—ื™ืคื•ืฉ ื•ืžืกื ื ื™ื ืื—ืจื™ื ื–ืžื™ื ื™ื ื’ื ื›ืŸ. ืœื“ื•ื’ืžื”, ื›ืš ืชื•ื›ืœ ืœืžืฆื•ื ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื™ื” ืžื‘ื—ืŸื ื•ืฆืจ ืœืคื ื™ ื™ื•ืชืจ ืž-5 ื™ืžื™ื:

[user@testhost ~]$ ls -ltr test
total 0
-rw-rw-r-- 1 user user 0 Nov 26 10:46 temp_clone
-rw-rw-r-- 1 user user 0 Dec  4 10:39 created_today
[user@testhost ~]$ find test/ -type f -ctime +5
test/temp_clone

ื—ื™ืคื•ืฉ ื˜ืงืกื˜ ื‘ืงื‘ืฆื™ื

ื”ืฆื•ื•ืช ื™ืขื–ื•ืจ ืœืš ืœื”ืชืžื•ื“ื“ ืขื ืžืฉื™ืžื” ื–ื• grep. ื™ืฉ ืœื• ืฉื™ืžื•ืฉื™ื ืจื‘ื™ื, ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ืžื•ื‘ื ื›ืืŸ ื›ื“ื•ื’ืžื”.

[user@testhost ~]$ grep -nr "content" test_dir/
test_dir/file_1:1:test content for file_1
test_dir/file_2:1:test content for file_2
test_dir/subdir/file_3:1:test content for file_3

ืื—ืช ื”ื“ืจื›ื™ื ื”ืคื•ืคื•ืœืจื™ื•ืช ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” grep - ืฉื™ืžื•ืฉ ื‘ื• ื‘ืฆื ืจืช (ืžืงื˜ืจืช):

[user@testhost ~]$ sudo tail -f /var/log/test.log | grep "ERROR"

ืืคืฉืจื•ืช -v ืžืืคืฉืจ ืœืš ืœื”ืฉืคื™ืข grepื•ืœื”ืคืš - ืจืง ืฉื•ืจื•ืช ืฉืื™ื ืŸ ืžื›ื™ืœื•ืช ืืช ื”ืชื‘ื ื™ืช ืฉื”ื•ืขื‘ืจื” ืืœื™ื” grep.

ื”ืฆื’ ื—ื‘ื™ืœื•ืช ืžื•ืชืงื ื•ืช

ืื™ืŸ ืคืงื•ื“ื” ืื•ื ื™ื‘ืจืกืœื™ืช, ื›ื™ ื”ื›ืœ ืชืœื•ื™ ื‘ื”ืคืฆืช ืœื™ื ื•ืงืก ื•ื‘ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉื‘ื• ื ืขืฉื” ืฉื™ืžื•ืฉ. ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉืื—ืช ืžื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช ืชืขื–ื•ืจ ืœืš:

yum list installed
apt list --installed
zypper se โ€”installed-only
pacman -Qqe
dpkg -l
rpm -qa

ืจืื” ื›ืžื” ืžืงื•ื ืชื•ืคืก ืขืฅ ื”ืกืคืจื™ื•ืช

ืื—ืช ื”ืืคืฉืจื•ื™ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื” du:

[user@testhost ~]$ du -h -d 1 test_dir/
8,0K test_dir/subdir
20K test_dir/

ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ืขืจืš ื”ืคืจืžื˜ืจ -dื›ื“ื™ ืœืงื‘ืœ ืžื™ื“ืข ืžืคื•ืจื˜ ื™ื•ืชืจ ืขืœ ืขืฅ ื”ืกืคืจื™ื•ืช. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื‘ืฉื™ืœื•ื‘ ืขื sort:

[user@testhost ~]$ du -h -d 1 test_dir/ | sort -h
8,0K test_dir/subdir
16K test_dir/subdir_2
36K test_dir/
[user@testhost ~]$ du -h -d 1 test_dir/ | sort -h -r
36K test_dir/
16K test_dir/subdir_2
8,0K test_dir/subdir

ืืคืฉืจื•ืช -h ื”ืงื‘ื•ืฆื” sort ืžืืคืฉืจ ืœืš ืœืžื™ื™ืŸ ื’ื“ืœื™ื ืฉื ื›ืชื‘ื• ื‘ืคื•ืจืžื˜ ืงืจื™ื ืื ื•ืฉื™ (ืœื“ื•ื’ืžื”, 1K, 2G), ืืคืฉืจื•ืช -r ืžืืคืฉืจ ืœืš ืœืžื™ื™ืŸ ื ืชื•ื ื™ื ื‘ืกื“ืจ ื”ืคื•ืš.

"ืžืฆื ื•ื”ื—ืœืฃ" ื‘ืงื•ื‘ืฅ, ื‘ืงื‘ืฆื™ื ื‘ืกืคืจื™ื”

ืคืขื•ืœื” ื–ื• ืžื‘ื•ืฆืขืช ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช ืฆืžื (ืœืœื ื“ื’ืœ g ื‘ืกื•ืฃ, ืจืง ื”ืžื•ืคืข ื”ืจืืฉื•ืŸ ืฉืœ "ื˜ืงืกื˜ ื™ืฉืŸ" ื‘ืฉื•ืจื” ื™ื•ื—ืœืฃ):

sed -i 's/old-text/new-text/g' input.txt

ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื• ืขื‘ื•ืจ ืžืกืคืจ ืงื‘ืฆื™ื ื‘ื• ื–ืžื ื™ืช:

[user@testhost ~]$ cat test_dir/file_*
test content for file_1
test content for file_2
[user@testhost ~]$ sed -i 's/test/edited/g' test_dir/file_*
[user@testhost ~]$ cat test_dir/file_*
edited content for file_1
edited content for file_2

ืฆื™ื™ืจ ืขืžื•ื“ื” ืžื”ืคืœื˜

ื–ื” ื™ืขื–ื•ืจ ืœื”ืชืžื•ื“ื“ ืขื ืžืฉื™ืžื” ื–ื• awk. ื“ื•ื’ืžื” ื–ื• ืžืฆื™ื’ื” ืืช ื”ืขืžื•ื“ื” ื”ืฉื ื™ื™ื” ืฉืœ ืคืœื˜ ื”ืคืงื•ื“ื” `ื .ื‘. ux`:

[user@testhost ~]$ ps ux | awk '{print $2}'
PID
11023
25870
25871
25908
25909

ื™ื—ื“ ืขื ื–ืืช, ื™ืฉ ืœื–ื›ื•ืจ ื–ืืช awk ื™ืฉ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืขืฉื™ืจื” ื”ืจื‘ื” ื™ื•ืชืจ, ื›ืš ืฉืื ืืชื” ืฆืจื™ืš ืœืขื‘ื•ื“ ืขื ื˜ืงืกื˜ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”, ืขืœื™ืš ืœืงืจื•ื ืขื•ื“ ืขืœ ืคืงื•ื“ื” ื–ื•.

ื’ืœื” ื›ืชื•ื‘ืช IP ืœืคื™ ืฉื ืžืืจื—

ืื—ืช ืžื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช ืชืขื–ื•ืจ ื‘ื›ืš:

[user@testhost ~]$ host ya.ru
ya.ru has address 87.250.250.242
ya.ru has IPv6 address 2a02:6b8::2:242
ya.ru mail is handled by 10 mx.yandex.ru.

[user@testhost ~]$ dig +short ya.ru
87.250.250.242

[user@testhost ~]$ nslookup ya.ru
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: ya.ru
Address: 87.250.250.242

ืžื™ื“ืข ืจืฉืช

ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ifconfig:

[user@testhost ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 47.89.93.67  netmask 255.255.224.0  broadcast 47.89.95.255
        inet6 fd90::302:57ff:fe79:1  prefixlen 64  scopeid 0x20<link>
        ether 04:01:57:79:00:01  txqueuelen 1000  (Ethernet)
        RX packets 11912135  bytes 9307046034 (8.6 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14696632  bytes 2809191835 (2.6 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 10  bytes 866 (866.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 866 (866.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ืื• ืื•ืœื™ ip:

[user@testhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 04:01:57:79:00:01 brd ff:ff:ff:ff:ff:ff
    inet 47.89.93.67/19 brd 47.89.95.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fd90::302:57ff:fe79:1/64 scope link
       valid_lft forever preferred_lft forever
3: ip_vti0: <NOARP> mtu 1500 qdisc noop state DOWN group default
    link/ipip 0.0.0.0 brd 0.0.0.0

ื™ืชืจื” ืžื›ืš, ืื, ืœืžืฉืœ, ืืชื” ืžืขื•ื ื™ื™ืŸ ืจืง ื‘-IPv4, ืื– ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืืคืฉืจื•ืช -4:

[user@testhost ~]$ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 47.89.93.67/19 brd 47.89.95.255 scope global eth0
       valid_lft forever preferred_lft forever

ื”ืฆื’ ื™ืฆื™ืื•ืช ืคืชื•ื—ื•ืช

ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช netstat. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ื›ืœ ื™ืฆื™ืื•ืช ื”ื”ืื–ื ื” ืฉืœ TCP ื•-UDP ืขื ืชืฆื•ื’ื” ืฉืœ ื”-PID ืฉืœ ืชื”ืœื™ืš ื”ื”ืื–ื ื” ื‘ื™ืฆื™ืื” ื•ื™ื™ืฆื•ื’ ืžืกืคืจื™ ืฉืœ ื”ื™ืฆื™ืื”, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ื• ืขื ื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช:

[user@testhost ~]$ netstat -lptnu

ืžื™ื“ืข ืžืขืจื›ืช

ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืžื™ื“ืข ื–ื” ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืœื ืฉื.

[user@testhost ~]$ uname -a
Linux alexander 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื‘ืื™ื–ื” ืคื•ืจืžื˜ ืžื•ืคืง ื”ืคืœื˜, ืืชื” ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืืœื™ื• ืœืขื–ื•ืจ'ืขื‘ื•ืจ ืคืงื•ื“ื” ื–ื•:

[user@testhost ~]$ uname --help
ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต: uname [ะšะ›ะฎะง]โ€ฆ
ะŸะตั‡ะฐั‚ะฐะตั‚ ะพะฟั€ะตะดะตะปะตะฝะฝั‹ะต ัะฒะตะดะตะฝะธั ะพ ัะธัั‚ะตะผะต.  ะ•ัะปะธ ะšะ›ะฎะง ะฝะต ะทะฐะดะฐะฝ,
ะฟะพะดั€ะฐะทัƒะผะตะฒะฐะตั‚ัั -s.

  -a, --all          ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะฒััŽ ะธะฝั„ะพั€ะผะฐั†ะธัŽ, ะฒ ัะปะตะดัƒัŽั‰ะตะผ ะฟะพั€ัะดะบะต,
                       ะบั€ะพะผะต -p ะธ -i, ะตัะปะธ ะพะฝะธ ะฝะตะธะทะฒะตัั‚ะฝั‹:
  -s, --kernel-name  ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะธะผั ัะดั€ะฐ
  -n, --nodename     ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะธะผั ะผะฐัˆะธะฝั‹ ะฒ ัะตั‚ะธ
  -r, --release      ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะฝะพะผะตั€ ะฒั‹ะฟัƒัะบะฐ ะพะฟะตั€ะฐั†ะธะพะฝะฝะพะน ัะธัั‚ะตะผั‹
  -v, --kernel-version     ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะฒะตั€ัะธัŽ ัะดั€ะฐ
  -m, --machine            ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ั‚ะธะฟ ะพะฑะพั€ัƒะดะพะฒะฐะฝะธั ะผะฐัˆะธะฝั‹
  -p, --processor          ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ั‚ะธะฟ ะฟั€ะพั†ะตััะพั€ะฐ ะธะปะธ ยซะฝะตะธะทะฒะตัั‚ะฝะพยป
  -i, --hardware-platform  ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ั‚ะธะฟ ะฐะฟะฟะฐั€ะฐั‚ะฝะพะน ะฟะปะฐั‚ั„ะพั€ะผั‹ ะธะปะธ ยซะฝะตะธะทะฒะตัั‚ะฝะพยป
  -o, --operating-system   ะฝะฐะฟะตั‡ะฐั‚ะฐั‚ัŒ ะธะผั ะพะฟะตั€ะฐั†ะธะพะฝะฝะพะน ัะธัั‚ะตะผั‹
      --help     ะฟะพะบะฐะทะฐั‚ัŒ ัั‚ัƒ ัะฟั€ะฐะฒะบัƒ ะธ ะฒั‹ะนั‚ะธ
      --version  ะฟะพะบะฐะทะฐั‚ัŒ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะฒะตั€ัะธะธ ะธ ะฒั‹ะนั‚ะธ

ืžื™ื“ืข ื–ื™ื›ืจื•ืŸ

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื›ืžื” ื–ื™ื›ืจื•ืŸ RAM ืชืคื•ืก ืื• ืคื ื•ื™, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื—ื•ืคืฉื™.

[user@testhost ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3,9G        555M        143M         56M        3,2G        3,0G
Swap:            0B          0B          0B

ืžื™ื“ืข ืขืœ ืžืขืจื›ื•ืช ืงื‘ืฆื™ื (ืฉื˜ื— ื“ื™ืกืง ืคื ื•ื™)

ืงื‘ื•ืฆื” df ืžืืคืฉืจ ืœืš ืœืจืื•ืช ื›ืžื” ืžืงื•ื ืคื ื•ื™ ื•ืชืคื•ืก ื‘ืžืขืจื›ื•ืช ืงื‘ืฆื™ื ืจื›ื•ื‘ื•ืช.

[user@testhost ~]$ df -hT
ะคะฐะนะปะพะฒะฐั ัะธัั‚ะตะผะฐ ะขะธะฟ      ะ ะฐะทะผะตั€ ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะพ  ะ”ะพัั‚ ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะพ% Cะผะพะฝั‚ะธั€ะพะฒะฐะฝะพ ะฒ
/dev/vda1        ext4        79G          21G   55G           27% /
devtmpfs         devtmpfs   2,0G            0  2,0G            0% /dev
tmpfs            tmpfs      2,0G            0  2,0G            0% /dev/shm
tmpfs            tmpfs      2,0G          57M  1,9G            3% /run
tmpfs            tmpfs      2,0G            0  2,0G            0% /sys/fs/cgroup
tmpfs            tmpfs      396M            0  396M            0% /run/user/1001

ืืคืฉืจื•ืช -T ืžืฆื™ื™ืŸ ืฉื™ืฉ ืœื”ืกื™ืง ืžื”ืกื•ื’ ืฉืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื.

ืžื™ื“ืข ืขืœ ืžืฉื™ืžื•ืช ื•ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืฉื•ื ื•ืช ืขืœ ื”ืžืขืจื›ืช

ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื—ืœืง ืขืœื™ื•ืŸ. ื”ื•ื ืžืกื•ื’ืœ ืœื”ืฆื™ื’ ืžื™ื“ืข ืžื’ื•ื•ืŸ: ืœืžืฉืœ, ืชื”ืœื™ื›ื™ื ืžื•ื‘ื™ืœื™ื ืœืคื™ ืฉื™ืžื•ืฉ ื‘-RAM ืื• ืชื”ืœื™ื›ื™ื ืžื•ื‘ื™ืœื™ื ืœืคื™ ืฉื™ืžื•ืฉ ื‘ื–ืžืŸ CPU. ื–ื” ื’ื ืžืฆื™ื’ ืžื™ื“ืข ืขืœ ื–ื™ื›ืจื•ืŸ, CPU, uptime ื•-LA (ืžืžื•ืฆืข ืขื•ืžืก).

[user@testhost ~]$ top | head -10
top - 17:19:13 up 154 days,  6:59,  3 users,  load average: 0.21, 0.21, 0.27
Tasks: 2169 total,   2 running, 2080 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.7%us,  0.7%sy,  0.0%ni, 97.5%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  125889960k total, 82423048k used, 43466912k free, 16026020k buffers
Swap:        0k total,        0k used,        0k free, 31094516k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  25282 user      20   0 16988 3936 1964 R  7.3  0.0   0:00.04 top
   4264 telegraf  20   0 2740m 240m  22m S  1.8  0.2  23409:39 telegraf
   6718 root      20   0 35404 4768 3024 S  1.8  0.0   0:01.49 redis-server

ืœื›ืœื™ ื”ืฉื™ืจื•ืช ื”ื–ื” ื™ืฉ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืขืฉื™ืจื”, ืื– ืื ืืชื” ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ื• ืœืขืชื™ื ืงืจื•ื‘ื•ืช, ืขื“ื™ืฃ ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“ ืฉืœื•.

dump ืชืขื‘ื•ืจืช ืจืฉืช

ื›ื“ื™ ืœื™ื™ืจื˜ ืชืขื‘ื•ืจืช ืจืฉืช ื‘ืœื™ื ื•ืงืก, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื›ืœื™ ืขื–ืจ tcpdump. ื›ื“ื™ ืœืฉืคื•ืš ืชืขื‘ื•ืจื” ืขืœ ื™ืฆื™ืื” 12345, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื”ื‘ืื”:

[user@testhost ~]$ sudo tcpdump -i any -A port 12345

ืืคืฉืจื•ืช -A ืื•ืžืจ ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœืจืื•ืช ืืช ื”ืคืœื˜ ื‘-ASCII (ืื– ื–ื” ื˜ื•ื‘ ืœืคืจื•ื˜ื•ืงื•ืœื™ ื˜ืงืกื˜), -ืื ื™ ื‘ื›ืœืœ ืžืฆื™ื™ืŸ ืฉืื™ื ื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ืžืžืฉืง ื”ืจืฉืช, ื ืžืœ - ืื™ื–ื• ืชืขื‘ื•ืจืช ื ืžืœ ืœื–ืจื•ืง. ื‘ืžืงื•ื ื ืžืœ ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื”ืžืืจื—, ืื• ืฉื™ืœื•ื‘ ื”ืžืืจื— ะธ ื ืžืœ (ืžืืจื— A ื•ื™ืฆื™ืื” X). ืืคืฉืจื•ืช ืฉื™ืžื•ืฉื™ืช ื ื•ืกืคืช ืขืฉื•ื™ื” ืœื”ื™ื•ืช -n - ืื™ืŸ ืœื”ืžื™ืจ ื›ืชื•ื‘ื•ืช ืœืฉืžื•ืช ืžืืจื— ื‘ืคืœื˜.
ืžื” ืื ื”ืชืขื‘ื•ืจื” ื”ื™ื ื‘ื™ื ืืจื™ืช? ืื– ื”ืืคืฉืจื•ืช ืชืขื–ื•ืจ ืœื ื• -X - ื ืชื•ื ื™ ืคืœื˜ ื‘-hex ื•-ASCII:

[user@testhost ~]$ sudo tcpdump -i any -X port 12345

ื™ืฉ ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืฉื‘ืฉื ื™ ืžืงืจื™ ื”ืฉื™ืžื•ืฉ ื™ื™ืฆืื• ืžื ื•ืช IP, ื›ืš ืฉื‘ืชื—ื™ืœืช ื›ืœ ืื—ืช ืžื”ืŸ ื™ื”ื™ื• ื›ื•ืชืจื•ืช IP ื•-TCP ื‘ื™ื ืืจื™ื•ืช. ื”ื ื” ืคืœื˜ ืœื“ื•ื’ืžื” ืขื‘ื•ืจ ื”ืฉืื™ืœืชื” "123" ื ืฉืœื— ืœืฉืจืช ืžืื–ื™ืŸ ื‘ื™ืฆื™ืื” 12345:

[user@testhost ~]$ sudo tcpdump -i any -X port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
14:27:13.224762 IP localhost.49794 > localhost.italk: Flags [P.], seq 2262177478:2262177483, ack 3317210845, win 342, options [nop,nop,TS val 3196604972 ecr 3196590131], length 5
    0x0000:  4510 0039 dfb6 4000 4006 5cf6 7f00 0001  E..9..@.@......
    0x0010:  7f00 0001 c282 3039 86d6 16c6 c5b8 9edd  ......09........
    0x0020:  8018 0156 fe2d 0000 0101 080a be88 522c  ...V.-........R,
    0x0030:  be88 1833 3132 330d 0a00 0000 0000 0000  ...3123.........
    0x0040:  0000 0000 0000 0000 00                   .........

ื‘ืžืงื•ื ืคืœื˜

ื›ืžื•ื‘ืŸ, ื™ืฉ ืขื•ื“ ื”ืจื‘ื” ื“ื‘ืจื™ื ืžืขื ื™ื™ื ื™ื ื‘ืœื™ื ื•ืงืก ืฉืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขืœื™ื”ื ื‘-Habrรฉ, StackOverflow ื•ืืชืจื™ื ืื—ืจื™ื (ืื ื™ ืืชืŸ ืœืš ื“ื•ื’ืžื” ืืžื ื•ืช ืฉื•ืจืช ื”ืคืงื•ื“ื”, ื•ื–ื” ื’ื ื›ืŸ ื‘ืชืจื’ื•ื). ืžื ื”ืœื™ ืžืขืจื›ืช ื•-DevOps ืžืฉืชืžืฉื™ื ื‘ื”ืจื‘ื” ื™ื•ืชืจ ืคืงื•ื“ื•ืช ื•ื›ืœื™ ืฉื™ืจื•ืช ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืฉืจืชื™ื, ืื‘ืœ ืื•ืœื™ ืืคื™ืœื• ืœื‘ื•ื“ืงื™ื ืื™ืŸ ืžืกืคื™ืง ืžื”ืคืงื•ื“ื•ืช ื”ืจืฉื•ืžื•ืช. ื™ื™ืชื›ืŸ ืฉืชืฆื˜ืจืš ืœื‘ื“ื•ืง ืืช ื ื›ื•ื ื•ืชื• ืฉืœ ืคืกืง ื–ืžืŸ ืžืกื•ื‘ืš ื›ืœืฉื”ื• ื‘ื™ืŸ ื”ืœืงื•ื— ืœืฉืจืช, ืื• ืืช ืคืขื•ืœืช ื”ืฉืจืช ื›ืืฉืจ ืื™ืŸ ืžืงื•ื ืคื ื•ื™ ื‘ื“ื™ืกืง. ืื ื™ ืืคื™ืœื• ืœื ืžื“ื‘ืจ ืขืœ, ืœืžืฉืœ, Docker, ืฉื ืžืฆื ื›ื™ื•ื ื‘ืฉื™ืžื•ืฉ ืคืขื™ืœ ืขืœ ื™ื“ื™ ื—ื‘ืจื•ืช ืจื‘ื•ืช. ื”ืื ื™ื”ื™ื” ืžืขื ื™ื™ืŸ, ื›ื—ืœืง ืžื”ืžืฉืš ืžืืžืจ ื–ื”, ืœื”ืกืชื›ืœ ืขืœ ืžืกืคืจ ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ื›ืœื™ ืขื–ืจ ืฉื•ื ื™ื ืฉืœ ืงื•ื ืกื•ืœื•ืช ืœื™ื ื•ืงืก ื‘ืชื”ืœื™ืš ื‘ื“ื™ืงืช ืฉื™ืจื•ืชื™? ืฉืชืฃ ื’ื ืืช ื”ืฆื•ื•ืชื™ื ื”ืžื•ื‘ื™ืœื™ื ืฉืœืš ื‘ืชื’ื•ื‘ื•ืช :)

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”