Общие команды и практические команды Linux 4D Резюме

Linux

Linux на самом деле является навыком, который должны знать как фронтенд, так и бэкэнд. В настоящее время многие детские туфли во фронтенде идут по большому маршруту фронтенда, не говоря уже о бэкенде. Редактор дал вам десятки тысяч слов (эта статья была удалена из-за лимита слов) О Linux Можно сказать, что это основные команды реального боя. Конечно, этого недостаточно. Редактор продолжит их обновлять позже. Вы можете следить за моими новостями и собирать их вместе, эту волну можно собрать.

ls

Одна из наиболее часто используемых команд.

Формат команды: ls [ОПЦИЯ]... [ФАЙЛ]... Простой ввод:

[root@iz2ze76ybn73dvwmdij06zz /]# ls
bin   dev  home  lib64       media  opt    proc  run   srv  tmp  var
boot  etc  lib   lost+found  mnt    patch  root  sbin  sys  usr  www
Добавьте опцию -l, она показывает разрешения, владельца, группу, размер, время, имя файла.
[root@iz2ze76ybn73dvwmdij06zz /]# ls -l
总用量 68
lrwxrwxrwx    1 root root     7 8月  26 22:36 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 8月  26 22:39 boot
drwxr-xr-x   19 root root  2960 4月  11 12:59 dev
drwxr-xr-x.  81 root root  4096 9月   5 17:09 etc
drwxr-xr-x.   2 root root  4096 4月  11 12:59 home
lrwxrwxrwx    1 root root     7 8月  26 22:36 lib -> usr/lib
lrwxrwxrwx    1 root root     9 8月  26 22:36 lib64 -> usr/lib64
drwx------.   2 root root 16384 10月 15 2017 lost+found
drwxr-xr-x.   2 root root  4096 4月  11 12:59 media
drwxr-xr-x.   2 root root  4096 4月  11 12:59 mnt
drwxr-xr-x.   3 root root  4096 8月  26 22:40 opt
drwxr-xr-x    2 root root  4096 8月  26 23:00 patch
dr-xr-xr-x  110 root root     0 4月  11 12:59 proc
dr-xr-x---.  12 root root  4096 9月  11 20:59 root
drwxr-xr-x   26 root root   760 9月   7 21:50 run
lrwxrwxrwx    1 root root     8 8月  26 22:36 sbin -> usr/sbin
drwxr-xr-x.   2 root root  4096 4月  11 12:59 srv
dr-xr-xr-x   13 root root     0 4月  11 12:59 sys
drwxrwxrwt.   9 root root  4096 9月  15 03:19 tmp
drwxr-xr-x.  13 root root  4096 8月  26 22:36 usr
drwxr-xr-x.  19 root root  4096 8月  26 22:55 var
drwxr-xr-x    6 root root  4096 8月  26 22:39 www
ls -a (все) файлы linux, начинающиеся с «.» (точка), по умолчанию скрыты, а -a может запрашивать все файлы.
[root@iz2ze76ybn73dvwmdij06zz /]# ls -a
.             bin   etc   lib64       mnt    .pearrc  run   sys    usr
..            boot  home  lost+found  opt    proc     sbin  .test  var
.autorelabel  dev   lib   media       patch  root     srv   tmp    www
ls -F отображает папки, оканчивающиеся на «/».
[root@iz2ze76ybn73dvwmdij06zz /]# ls -F
bin@   dev/  home/  lib64@       media/  opt/    proc/  run/   srv/  tmp/  var/
boot/  etc/  lib@   lost+found/  mnt/    patch/  root/  sbin@  sys/  usr/  www/
ls -r отображение воспоминаний, порядок по умолчанию (a,b,c,d) отображение положительного порядка, подобное этому
[root@iz2ze76ybn73dvwmdij06zz /]# ls -r
www  usr  sys  sbin  root  patch  mnt    lost+found  lib   etc  boot
var  tmp  srv  run   proc  opt    media  lib64       home  dev  bin
ls -R() рекурсивно отображать подкаталоги
[root@iz2ze76ybn73dvwmdij06zz test]# ls -R
.:
data

./data:
img

./data/img:
car  product  user

./data/img/car:

./data/img/product:

./data/img/user:
ls -lS отображается в порядке убывания размера файла
[root@iz2ze76ybn73dvwmdij06zz /]# ls -lS
总用量 72
drwx------.   2 root root 16384 10月 15 2017 lost+found
dr-xr-xr-x.   5 root root  4096 8月  26 22:39 boot
drwxr-xr-x.  81 root root  4096 9月   5 17:09 etc
drwxr-xr-x.   2 root root  4096 4月  11 12:59 home
drwxr-xr-x.   2 root root  4096 4月  11 12:59 media
drwxr-xr-x.   2 root root  4096 4月  11 12:59 mnt
drwxr-xr-x.   3 root root  4096 8月  26 22:40 opt
drwxr-xr-x    2 root root  4096 8月  26 23:00 patch
dr-xr-x---.  12 root root  4096 9月  15 22:03 root
drwxr-xr-x.   2 root root  4096 4月  11 12:59 srv
drwxr-xr-x    3 root root  4096 9月  15 22:10 test
drwxrwxrwt.   9 root root  4096 9月  15 03:19 tmp
drwxr-xr-x.  13 root root  4096 8月  26 22:36 usr
drwxr-xr-x.  19 root root  4096 8月  26 22:55 var
drwxr-xr-x    6 root root  4096 8月  26 22:39 www
drwxr-xr-x   19 root root  2960 4月  11 12:59 dev
drwxr-xr-x   26 root root   760 9月   7 21:50 run
lrwxrwxrwx    1 root root     9 8月  26 22:36 lib64 -> usr/lib64
lrwxrwxrwx    1 root root     8 8月  26 22:36 sbin -> usr/sbin
lrwxrwxrwx    1 root root     7 8月  26 22:36 bin -> usr/bin
lrwxrwxrwx    1 root root     7 8月  26 22:36 lib -> usr/lib
dr-xr-xr-x  110 root root     0 4月  11 12:59 proc
dr-xr-xr-x   13 root root     0 4月  11 12:59 sys
ls -g не выводит информацию о владельце (владельце)
[root@iz2ze76ybn73dvwmdij06zz /]# ls -g
总用量 72
lrwxrwxrwx    1 root     7 8月  26 22:36 bin -> usr/bin
dr-xr-xr-x.   5 root  4096 8月  26 22:39 boot
-rw-r--r--    1 root     0 9月  15 22:20 c
drwxr-xr-x   19 root  2960 4月  11 12:59 dev
drwxr-xr-x.  81 root  4096 9月   5 17:09 etc
drwxr-xr-x.   2 root  4096 4月  11 12:59 home
lrwxrwxrwx    1 root     7 8月  26 22:36 lib -> usr/lib
lrwxrwxrwx    1 root     9 8月  26 22:36 lib64 -> usr/lib64
drwx------.   2 root 16384 10月 15 2017 lost+found
drwxr-xr-x.   2 root  4096 4月  11 12:59 media
drwxr-xr-x.   2 root  4096 4月  11 12:59 mnt
drwxr-xr-x.   3 root  4096 8月  26 22:40 opt
drwxr-xr-x    2 root  4096 8月  26 23:00 patch
dr-xr-xr-x  110 root     0 4月  11 12:59 proc
dr-xr-x---.  12 root  4096 9月  15 22:18 root
drwxr-xr-x   26 root   760 9月   7 21:50 run
lrwxrwxrwx    1 root     8 8月  26 22:36 sbin -> usr/sbin
drwxr-xr-x.   2 root  4096 4月  11 12:59 srv
dr-xr-xr-x   13 root     0 4月  11 12:59 sys
drwxr-xr-x    3 root  4096 9月  15 22:18 test
drwxrwxrwt.   9 root  4096 9月  15 03:19 tmp
drwxr-xr-x.  13 root  4096 8月  26 22:36 usr
drwxr-xr-x.  19 root  4096 8月  26 22:55 var
drwxr-xr-x    6 root  4096 8月  26 22:39 www
ls -lG скрывает всю информацию о группе (группе)
[root@iz2ze76ybn73dvwmdij06zz /]# ls -lG
总用量 72
lrwxrwxrwx    1 root     7 8月  26 22:36 bin -> usr/bin
dr-xr-xr-x.   5 root  4096 8月  26 22:39 boot
-rw-r--r--    1 root     0 9月  15 22:20 c
drwxr-xr-x   19 root  2960 4月  11 12:59 dev
drwxr-xr-x.  81 root  4096 9月   5 17:09 etc
drwxr-xr-x.   2 root  4096 4月  11 12:59 home
lrwxrwxrwx    1 root     7 8月  26 22:36 lib -> usr/lib
lrwxrwxrwx    1 root     9 8月  26 22:36 lib64 -> usr/lib64
drwx------.   2 root 16384 10月 15 2017 lost+found
drwxr-xr-x.   2 root  4096 4月  11 12:59 media
drwxr-xr-x.   2 root  4096 4月  11 12:59 mnt
drwxr-xr-x.   3 root  4096 8月  26 22:40 opt
drwxr-xr-x    2 root  4096 8月  26 23:00 patch
dr-xr-xr-x  110 root     0 4月  11 12:59 proc
dr-xr-x---.  12 root  4096 9月  15 22:18 root
drwxr-xr-x   26 root   760 9月   7 21:50 run
lrwxrwxrwx    1 root     8 8月  26 22:36 sbin -> usr/sbin
drwxr-xr-x.   2 root  4096 4月  11 12:59 srv
dr-xr-xr-x   13 root     0 4月  11 12:59 sys
drwxr-xr-x    3 root  4096 9月  15 22:18 test
drwxrwxrwt.   9 root  4096 9月  15 03:19 tmp
drwxr-xr-x.  13 root  4096 8月  26 22:36 usr
drwxr-xr-x.  19 root  4096 8月  26 22:55 var
drwxr-xr-x    6 root  4096 8月  26 22:39 www
10.ls -li 显示文件的索引号
[root@iz2ze76ybn73dvwmdij06zz /]# ls -li
ls -li отображает порядковый номер файла
[root@iz2ze76ybn73dvwmdij06zz /]# ls -li

总用量 72
  7628 lrwxrwxrwx    1 root root     7 8月  26 22:36 bin -> usr/bin
1179650 dr-xr-xr-x.   5 root root  4096 8月  26 22:39 boot
  4923 -rw-r--r--    1 root root     0 9月  15 22:20 c
  1026 drwxr-xr-x   19 root root  2960 4月  11 12:59 dev
917505 drwxr-xr-x.  81 root root  4096 9月   5 17:09 etc
655362 drwxr-xr-x.   2 root root  4096 4月  11 12:59 home
    17 lrwxrwxrwx    1 root root     7 8月  26 22:36 lib -> usr/lib
    13 lrwxrwxrwx    1 root root     9 8月  26 22:36 lib64 -> usr/lib64
    11 drwx------.   2 root root 16384 10月 15 2017 lost+found
786434 drwxr-xr-x.   2 root root  4096 4月  11 12:59 media
131074 drwxr-xr-x.   2 root root  4096 4月  11 12:59 mnt
393219 drwxr-xr-x.   3 root root  4096 8月  26 22:40 opt
1966081 drwxr-xr-x    2 root root  4096 8月  26 23:00 patch
     1 dr-xr-xr-x  110 root root     0 4月  11 12:59 proc
131073 dr-xr-x---.  12 root root  4096 9月  15 22:18 root
   218 drwxr-xr-x   26 root root   760 9月   7 21:50 run
    15 lrwxrwxrwx    1 root root     8 8月  26 22:36 sbin -> usr/sbin
393220 drwxr-xr-x.   2 root root  4096 4月  11 12:59 srv
     1 dr-xr-xr-x   13 root root     0 4月  11 12:59 sys
2097153 drwxr-xr-x    3 root root  4096 9月  15 22:18 test
393217 drwxrwxrwt.   9 root root  4096 9月  15 03:19 tmp
1048578 drwxr-xr-x.  13 root root  4096 8月  26 22:36 usr
262145 drwxr-xr-x.  19 root root  4096 8月  26 22:55 var
1441793 drwxr-xr-x    6 root root  4096 8月  26 22:39 www
ls -lt создает файлы a b в порядке времени модификации (обратный порядок)
[root@iz2ze76ybn73dvwmdij06zz test]# ls -lt
总用量 0
-rw-r--r-- 1 root root 0 9月  15 22:18 b
-rw-r--r-- 1 root root 0 9月  15 22:18 a
ls -version
[root@iz2ze76ybn73dvwmdij06zz test]# ls --version
ls (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。

由Richard M. Stallman 和David MacKenzie 编写。

cat

cat, снова относительно высокочастотная команда. Более официальное заявление состоит в том, что команда используется для связывания файлов и печати на стандартный вывод. Эту команду вывода текста можно использовать для просмотра содержимого файла, создания содержимого и т. д. Ниже мы представим еще несколько практических применений. Формат команды: cat [параметры]... [файлы]...

cat -n для просмотра и отображения номеров строк
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat -n a
    1  this is a txt
    2  hello every body
    3  hello world
    4  hahaha
cat создает пустой файл b
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat >b <<EOF
> EOF
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# ls
a  b
пустое содержимое файла cat
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat >a<<EOF
> EOF
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat a
кот пишет контент (если исходный контент будет перезаписан)
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat >a<<EOF
> today is a good day
> because off work
> hahaha
> EOF
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat a
today is a good day
because off work
hahaha
cat отображает содержимое нескольких файлов одновременно (напишите happy в b)
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat a > b
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat b
today is a good day
because off work
hahaha
Дополнительный контент Вы можете видеть, что контент будет добавлен после использования даже одного >
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat a >> b
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat b
today is a good day
because off work
hahaha
today is a good day
because off work
hahaha
cat --help (если хотите узнать больше, можете попробовать сами)
[root@iz2ze76ybn73dvwmdij06zz linuxdemo]# cat --help
用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。

 -A, --show-all           等于-vET
 -b, --number-nonblank    对非空输出行编号
 -e                       等于-vE
 -E, --show-ends          在每行结束处显示"$"
 -n, --number             对输出的所有行编号
 -s, --squeeze-blank      不输出多行空行
 -t                       与-vT 等价
 -T, --show-tabs          将跳格字符显示为^I
 -u                       (被忽略)
 -v, --show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
     --help    显示此帮助信息并退出
     --version    显示版本信息并退出

如果没有指定文件,或者文件为"-",则从标准输入读取。

示例:
 cat f - g  先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
 cat        将标准输入的内容复制到标准输出。

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
要获取完整文档,请运行:info coreutils 'cat invocation'

Права пользователя

Все мы знаем, что Linux — это многозадачная многопользовательская операционная система. Несколько пользователей могут одновременно выполнять разные задачи в операционной системе, и один пользователь также может войти в систему, чтобы управлять несколькими людьми. Вообще говоря, root имеет самые большие полномочия. База данных, которую мы часто используем, обычно использует пользователя mysql. Для веб-страниц мы можем использовать учетную запись www. Управляется некоторыми специалистами. Для систематического изучения, я думаю, необходимо понять его базовые знания.

Классификация ролей Linux

Суперпользователь: root (идентификатор пользователя --UID) 0 Высшие административные привилегии.

обычный пользователь:

    系统用户 UID:1-999(rhel7  centos7) 1-499(rhel6)
    
    本地用户 UID:1000+(rhel7 centos7)  500+(rhel6)

UID: идентификатор пользователя, уникальный идентификатор.

групповая классификация Linux

Группа:

Классификация групп:

根据账号的功能分类:

           超级用户组: root GID:0
           普通用户组 : 
                               系统用户组: GID 1---999
                                本地用户组: GID 1000+
Отношения пользователя и группы Linux

Пользователь принадлежит к одной группе или нескольким группам, а несколько пользователей могут принадлежать к одной группе или нескольким группам.

Связанные файлы конфигурации для пользователей и групп Linux

1./etc/passwd: Информация о пользователе и атрибутах.

2./etc/group: информация о группе и атрибутах.

3./etc/shadow: Пароль пользователя и информация об атрибутах.

4./etc/gshadow: Групповой пароль и информация об атрибутах.

5./etc/default/useradd: Установите файл правил для добавления пользователей.

6./etc/login.defs: Установить ограничения для учетной записи пользователя.

файл с информацией о пользователе linux

Самый важный файл в управлении пользователями, этот файл открыт для всех пользователей, в каждой строке хранится информация о пользователе, а каждый атрибут отделяется двоеточием.

cat /etc/passwd
root:x:0:0:root:/root:/bin/zsh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

Пример: корень:x:0:0:корень:/корень:/bin/zsh

1. Имя пользователя для входа: root

2. Заполнитель для пароля пользователя: x

3. UID пользователя: 0

4. GID группы пользователей: 0

5. Описание учетной записи пользователя: root

6. Местоположение домашнего каталога пользователя: /root

7. Пользовательская оболочка по умолчанию: /bin/zsh (по умолчанию /bin/bash)

Файл информации о пароле Linux

Только пользователь root имеет разрешение на чтение в этом файле, в каждой строке хранится запись пользователя, а каждый атрибут отделяется двоеточием.

cat /etc/shadow
root:$6$LxE7qiaZ$ZZXf/aCO1Zqs1oOS9WDutUk9rFOq4MOoSG9IeXq2f5sduGrgfYvzOWHZmJZFGC.0Of1DjCna0M.oQZTY8r00/.:17769:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::

Пример: бин:*:17110:0:99999:7::: 1. Имя пользователя для входа: bin

2. Зашифрованный пароль: * означает, что пароль заблокирован

3. Дата последней смены пароля: 17110 представляет собой количество дней до 1970-1-1, в течение которых пароль не может быть изменен.

4. Период изменения пароля: 99999 означает, что никогда не нужно менять пароль, если это другое число, это означает, сколько дней с 1970-1-1 пароль необходимо изменить.

5. Максимальное количество дней для смены пароля: максимальное количество дней, в течение которых пароль остается действительным.

6. Предупреждение об истечении срока действия пароля: сколько дней до официального истечения срока действия пароля (-1, никогда не запрашивать)

7. Через сколько дней после истечения срока действия пароля отключить пользователя: войти можно, но работать нельзя.

8. Дата отключения пользователя: через сколько дней после истечения срока действия учетной записи невозможно войти в систему.

9. Зарезервированные параметры

файл с информацией о группе linux

Здесь хранится информация о группе пользователей, одна групповая запись хранится в одной строке, а атрибуты разделяются двоеточиями.

➜  ~ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:

Пример: корень:х:0:

1. Имя группы: корень

2. Заполнитель группового пароля: x

3. GID группы: 0

Основы управления установочными пакетами

Я считаю, что большинство людей должны быть такими, как я. Они начинали с Windows в начале, поэтому они знакомы с установочными пакетами на платформе Windows, такими как .exe. Это слишком распространено? Как правило, mysql был установлен на Windows, Я считаю, что .msi также виден. Большинство серверов Linux, поэтому давайте изучим основы установочного пакета Linux. Инструменты, используемые разными системами дистрибуции, также различаются. В настоящее время серверы большинства компаний основаны на Centos, поэтому Centos будет использоваться в качестве примера в будущем.

на основе красной шляпы

yum

zypper

rpm

на базе центос

yum

rpm

rpm

Полное имя: Диспетчер пакетов Redhat

URL для скачивания: http://rpmfind.net

Давайте сначала посмотрим на формат именования пакета, в качестве примера возьмем rpm-5.4.10-10.i586.rpm.

об/мин : имя пакета

5 : номер основной версии

4 : дополнительный номер версии

10 : номер версии

i586: платформа архитектуры процессора

rpm : суффикс пакета

yum

Решите проблему зависимости установки пакетов, автоматически загружайте пакеты на основе архитектуры c/s. Файл репо — это файл конфигурации источника yum, а файл изменений определяет информацию о репозитории программного обеспечения. Почему это называется архитектурой c/s?Первоначально заголовок программного обеспечения rpm будет записывать информацию о зависимостях модифицированного программного обеспечения, поэтому вы можете проанализировать содержимое заголовка, узнать связанные с ним зависимости и записать информацию. Затем сервер предоставляет программные пакеты этих пакетов, а затем анализирует зависимости пакетов и записывает их в определенный каталог на сервере. При установке программного обеспечения клиент загружает свой файл зависимостей записи, анализирует его и, наконец, загружает за один раз.

Основы управления процессами

Вообще говоря, программы делятся на две категории: системные программы и прикладные программы. Можно сказать, что работающая программа — это процесс, процесс занимает место в памяти, и когда вы завершаете процесс, ресурсы также освобождаются.

тип процесса

Пользовательский процесс: собственная программа пользователя, пользователь может управлять ее открытием и закрытием.

Интерактивный процесс: процесс, который взаимодействует с пользователем.

Пакетный процесс: это набор процессов, которые последовательно запускают другие процессы.

Демон: Процесс, работающий постоянно.crond.

свойства процесса

Идентификатор процесса: (pid) Уникальный числовой идентификатор для различения различных процессов.

Процесс имеет родительский процесс и дочерний процесс.

ID пользователя (uid), запустившего процесс, и группу пользователя.

Три состояния процесса:

  • запустить --R

  • спящий режим -- С

  • Зомби -- Z

Приоритет процесса: диапазон значений (-20, 19), чем меньше значение, тем выше приоритет, по умолчанию 0.

Терминал, к которому привязан процесс.

Процесс использования ресурсов.

Отношения процесса родитель-потомок

Если родительский процесс завершится первым, дочерний процесс будет принят процессом инициализации. Если дочерний процесс завершается первым, а родительский процесс не вызывает ожидание или ожидание, процесс находится в мертвом состоянии.Если вы хотите избежать этой ситуации, вам нужно вызвать ожидание или ожидание в родительском процессе.

Инструмент управления процессами
    ps:   查看进程。
    top:  可以查看进程的动态信息。
    kill:  杀进程。
    pstree:  查看进程树。
    pgrep:  搜进程。
    lsof:  查看进程打开的文件。

Практика управления процессами

ps

Статически отображать информацию о текущем процессе.

Команда: пс

Синтаксис: параметр ps

Общие параметры:

               a      显示所有用户的进程
               r       显示运行中的进程
               l        长格式输出
               u        按用户名和启动时间的顺序来显示进程
               f         用树形格式来显示进程
               x        显示没有控制终端的进程

работать: Формат BSD для отображения процесса

➜  ~ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  43364  3596 ?        Ss   11月03   0:01 /usr/lib/syst
root         2  0.0  0.0      0     0 ?        S    11月03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11月03   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   11月03   0:00 [kworker/0:0H
root         7  0.0  0.0      0     0 ?        S    11月03   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月03   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    11月03   0:05 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/1]
root        12  0.0  0.0      0     0 ?        S    11月03   0:00 [migration/1]
root        13  0.0  0.0      0     0 ?        S    11月03   0:00 [ksoftirqd/1]
root        15  0.0  0.0      0     0 ?        S<   11月03   0:00 [kworker/1:0H

Стандартный формат для отображения процесса в стиле unix

 ~ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 11月03 ?      00:00:01 /usr/lib/systemd/systemd --syste
root         2     0  0 11月03 ?      00:00:00 [kthreadd]
root         3     2  0 11月03 ?      00:00:00 [ksoftirqd/0]
root         5     2  0 11月03 ?      00:00:00 [kworker/0:0H]
root         7     2  0 11月03 ?      00:00:00 [migration/0]
root         8     2  0 11月03 ?      00:00:00 [rcu_bh]
root         9     2  0 11月03 ?      00:00:05 [rcu_sched]
root        10     2  0 11月03 ?      00:00:00 [watchdog/0]
root        11     2  0 11月03 ?      00:00:00 [watchdog/1]
root        12     2  0 11月03 ?      00:00:00 [migration/1]
root        13     2  0 11月03 ?      00:00:00 [ksoftirqd/1]
root        15     2  0 11月03 ?      00:00:00 [kworker/1:0H]
root        17     2  0 11月03 ?      00:00:00 [kdevtmpfs]
root        18     2  0 11月03 ?      00:00:00 [netns]
root        19     2  0 11月03 ?      00:00:00 [khungtaskd]
root        20     2  0 11月03 ?      00:00:00 [writeback]
root        21     2  0 11月03 ?      00:00:00 [kintegrityd]
Детали атрибута:

ПОЛЬЗОВАТЕЛЬ: владелец процесса

PID: идентификатор процесса

%CPU: процент загрузки ЦП

%MEM: Процент обработки памяти

VSZ: Размер виртуальной памяти, занимаемой процессом

RSS: фиксированный объем используемой памяти

Статус процесса STAT

       R    正在运行可中在队列中可过行的;
   S    处于休眠状态;
   
   T    停止或被追踪;
   
   Z    僵尸进程;
   
   N    优先级较低的进程
   
   L    有些页被锁进内存;
   
   s    进程的领导者(在它之下有子进程)
скопировать код

START время запуска процесса;

Процесс TIME потребляет процессорное время;

КОМАНДА имя и параметры команды;

Сортировать по указанному свойству:

Сортировать по ЦП от меньшего к большему.

➜  ~ ps aux --sort %cpu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  43364  3596 ?        Ss   11月03   0:01 /usr/lib/syst
root         2  0.0  0.0      0     0 ?        S    11月03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11月03   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   11月03   0:00 [kworker/0:0H
root         7  0.0  0.0      0     0 ?        S    11月03   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月03   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    11月03   0:05 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/1]

Сортировать по ЦП от большего к меньшему.

➜  ~ ps aux --sort -%cpu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     21342  0.3  0.4 137184 17112 ?        Ssl  03:24   1:16 /usr/local/aegi
root         1  0.0  0.0  43364  3596 ?        Ss   11月03   0:01 /usr/lib/syst
root         2  0.0  0.0      0     0 ?        S    11月03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11月03   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   11月03   0:00 [kworker/0:0H
root         7  0.0  0.0      0     0 ?        S    11月03   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月03   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    11月03   0:05 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    11月03   0:00 [watchdog/1]
root        12  0.0  0.0      0     0 ?        S    11月03   0:00 [migration/1]
root        13  0.0  0.0      0     0 ?        S    11月03   0:00 [ksoftirqd/1]
top

В отличие от ps, команда top может просматривать динамическую информацию о процессе.

Команда: сверху

Синтаксис: верхний параметр

Общие параметры:

работать:

➜  ~ top
top - 11:38:42 up 13:15,  2 users,  load average: 0.01, 0.03, 0.05
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881688 total,   229264 free,   543932 used,  3108492 buff/cache
KiB Swap:  1049596 total,  1049596 free,        0 used.  3026944 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   1 root      20   0   43364   3596   2340 S   0.0  0.1   0:01.79 systemd
   2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
   3 root      20   0       0      0      0 S   0.0  0.0   0:00.14 ksoftirqd/0
   5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
   7 root      rt   0       0      0      0 S   0.0  0.0   0:00.33 migration/0
   8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
   9 root      20   0       0      0      0 S   0.0  0.0   0:05.73 rcu_sched
Объяснение атрибута:

Первые пять строк представляют собой статистику сопоставления данных.

Первая строка:

     11:38:42     当前时间
     
      up 13:15     系统运行时间,格式为时:分
      
      2 user         当前登陆用户数量
      
      load average: 0.01, 0.03, 0.05  系统负载,任务队列平均长度 1分钟,5分钟,15分钟前到现在的平均值。

Вторая и третья строки:

98 total  进程总数量
 1 running 正在运行的进程数量
 97 sleeping 睡眠的进程数量
 0 stopped  停止的进程数量
 0 zombie   僵尸进程数量
 %Cpu(s):
 0.2 us 系统用户进程使用cpu百分比
 0.0 sy 内核进程占用cpu百分比
 0.0 ni 用户进程空间内改变过优先级的进程占用cpu百分比
     99.8 id 空闲cpu百分比
       0.0 wa 等待输入输出的cpu时间百分比
       0.0 hi   硬件cpu中断占用百分比
       0.0  si   软中断占用百分比
       0.0  st  虚拟机占用百分比

Четвертая и пятая строки:

Память: (единица К)

3881688 total  物理内存总量
229264 free    空闲内存总量
543932 used    使用的物理内存总量
3108492 buff/cache 内核缓存的内存量   

Обмен: (единица К)

 1049596 total      交换区总量
 1049596 free       空闲交换区总量
 0 used             使用的交换区总量
 3026944 avail Mem  可利用的内存量 

Строка заголовка:

PID: идентификатор процесса

ПОЛЬЗОВАТЕЛЬ: имя пользователя владельца процесса.

PR: приоритет

NI: приоритет процесса, значение nice, отрицательное значение -> высокий приоритет, положительное значение -> низкий приоритет

VIRT: общая виртуальная память virt=swap + res

RES: фактический объем используемой памяти.

SHR: размер общей памяти

S: статус процесса

   d: 不可中断的睡眠状态
   r: 运行
   s: 睡眠
   t: 跟踪
   z: 僵尸进程

%CPU: процент времени ЦП, использованного с момента последнего обновления.

%MEM: процент физической памяти, используемой процессом.

ВРЕМЯ+: общее время, в течение которого процесс использует ЦП, единица измерения составляет 1/100 секунды.

КОМАНДА: командная строка

kill

Команда: убить

грамматика:

      kill [-s signal|-p] [-q sigval] [-a] [--] pid...
      kill -l [signal]

Общие параметры:

     -l 列出所有信号名称  
     -s 指定发送信号(默认)
     -u 指定用户

работать: Список всех имен сигналов

➜  ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

принудительное прекращение

➜  ~ kill -9 23423
终止
➜  ~ kill -15 22323

Убить все процессы указанного пользователя

➜  ~ kill -u superh
каталог процедур

Этот каталог содержит информацию о ядре и текущем состоянии процесса.

➜  /proc ls
1      21320  21628  240   392   7          diskstats    loadavg       swaps
10     21342  21976  242   42    722        dma          locks         sys
10353  21465  21977  243   44    7561       driver       mdstat        sysrq-trigger
10509  21613  21978  244   442   8          execdomains  meminfo       sysvipc
107    21614  22     249   45    803        fb           misc          timer_list
11     21615  220    26    46    8179       filesystems  modules       timer_stats
11010  21616  22285  261   466   8307       fs           mounts        tty
11102  21617  22287  262   467   8327       interrupts   mtrr          uptime
12     21618  22361  267   469   9          iomem        net           version
13     21619  22363  268   476   acpi       ioports      pagetypeinfo  vmallocinfo
14461  21620  22396  3     477   buddyinfo  irq          partitions    vmstat
15     21621  22467  31    485   bus        kallsyms     sched_debug   zoneinfo
17     21622  225    3198  5     cgroups    kcore        schedstat
18     21623  229    32    505   cmdline    keys         scsi
19     21624  23     33    506   consoles   key-users    self
2      21625  23884  336   5217  cpuinfo    kmsg         slabinfo
20     21626  23885  34    5515  crypto     kpagecount   softirqs
21     21627  24     357   65    devices    kpageflags   stat

Каждая метка выше — это имя каталога, названного в честь pid нашего текущего процесса.

free

Просмотр использования системы и свободной памяти.

Команда: бесплатно

Синтаксис: свободный параметр

Общие параметры:

 -b, --bytes        byte为单位展示
 -k, --kilo            k为单位展示
 -m, --mega       m为单位展示
 -g, --giga           g为单位展示

работать:

➜  ~ free -m
             total        used        free      shared  buff/cache   available
Mem:           3790         536         210           2        3043        2950
Swap:          1024           0        1024

Единица отображается в г.

➜  ~ free -h
            total        used        free      shared  buff/cache   available
Mem:           3.7G        538M        207M        2.4M        3.0G        2.9G
Swap:          1.0G          0B        1.0G

поиск файлов

При выполнении действий, связанных с эксплуатацией и обслуживанием, мы должны проверять такие и другие файлы, вообще говоря, мы можем проверить, например, где находится файл с именем xxx.conf, проверить лог и местонахождение исполняемого файла.

Обзор
which : 查看执行文件的位置。

whereis : 查看可执行文件位置和相关文件。

locate : 配合数据库缓存,快速查看文件的位置。

grep : 过滤匹配,他是一个文件搜索工具。

find  :  可以根据条件查看文件。
which

Команда: какой

Синтаксис: какой параметр запроса является целью

Общие команды: Обычно используется без параметров

          --all, -a      显示所有的匹配路径

работать:

➜  ~ which pwd
/usr/bin/pwd

whereis

Команда: где

Синтаксис: где цель запроса параметра

Общие команды:

           一般不加参数使用
         -b         只搜索二进制文件
         -B <目录>  定义二进制文件查找路径
         -m         只搜索 man 手册
         -M <目录>  定义 man 手册查找路径
         -s         只搜索源代码
         -S <目录>  定义源代码查找路径

работать:

➜  ~ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
locate

Команда: найти

Синтаксис: найти имя файла

Общие параметры: никто

работать: Функции locate и find аналогичны, но эффективность поиска выше, потому что locate ищет в базе данных, а find ищет в файле каталога.

база данных:

➜  ~ ls /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db

Связанные файлы конфигурации:

➜  ~ ls /etc/updatedb.conf
/etc/updatedb.conf

Связанные временные задачи:

➜  ~ ls /etc/cron.daily/mlocate
/etc/cron.daily/mlocate

Пример:

➜  ~ touch shafa
➜  ~ locate shafa
➜  ~ updatedb
➜  ~ locate shafa
/root/shafa

Примечание. Если мы ищем новые файлы в этот день, нам нужно вручную обновить b.

grep

Команда: греп

Синтаксис: файл целевого значения параметра grep

Общие параметры:

            -v       取反
            -i        忽略大小写
            -n        输出的同时打印行号
            ^*        以*开头                 
            *$         以*结尾 
            ^$         空行 

работать:

Проверьте /etc/passwd на наличие строки с root

➜  ~ grep root /etc/passwd
root:x:0:0:root:/root:/bin/zsh
operator:x:11:0:operator:/root:/sbin/nologin

Проверьте /etc/passwd на наличие строк без рута (больше контента, некоторые строки запрещены)

➜  ~ grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

Проверьте /etc/passwd на наличие строки с www и отобразите номер строки

➜  ~ grep -n www /etc/passwd
23:www:x:1000:1000::/home/www:/sbin/nologin
find

Команда: найти

Синтаксис: найти вывод аргументов пути

Общие параметры:

            路径: 例如用 . 来表示当前目录,用 / 来表示系统根目录。
           -print: 显示的时候”\n”做为定界符, 换行
          -print0:与xargs配套使用,以“\0”做为定界符

найти общие параметры команды:

-name   按照文件名查找文件。  “名称”
-perm   按照文件权限来查找文件。666 777 等
-depth  在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-user   按照文件属主来查找文件
 -atime  -ctime (单位是天)
 -mmin -cmin  -amin(单位是分钟)
 -size n [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
 -follow  如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

работать:

Просмотр файлов, начинающихся с test., в текущем каталоге

➜  ~ find . -name "test*"
./test.txt
./autojump/tests
./test.1

Просмотрите файлы, начинающиеся с test., в текущем каталоге, и результаты вывода будут отображаться в новой строке (по умолчанию).

➜  ~ find . -name "test*" -print
./test.txt
./autojump/tests
./test.1

Просмотрите файлы, начинающиеся с test., в текущем каталоге, и результаты вывода не будут отображаться в новой строке

➜  ~ find . -name "test*" -print0
./test.txt./autojump/tests./test.1

Выполнить соответствующую команду на найденном содержимом

Действие выполнения по умолчанию: -print

Общие действия:

              -exec  这个参数后可以跟自定义shell命令

работать:

Запрашивайте файлы, оканчивающиеся на .txt, и запрашивайте их дополнительные свойства с помощью ls

➜  test find . -name "*.txt" -exec ls -l {} \;
-rw-r--r-- 1 root root 0 11月  4 14:56 ./xq1.txt
-rw-r--r-- 1 root root 0 11月  4 14:56 ./xq.txt
-rw-r--r-- 1 root root 0 11月  4 14:56 ./xq2.txt

Запрашивать файлы, заканчивающиеся на .txt, и превращать их в файлы, заканчивающиеся на .bak

➜  test find . -name "*.txt" -exec mv {} {}.bak \;
➜  test ls
xq1.txt.bak  xq2.txt.bak  xq.txt.bak

Логический запрос:

        -a  并且
        -o  或者
         +  高于
         -   低于

работать: Ищите файлы, оканчивающиеся на .sh или .q.

➜  test find . -name "*.sh" -o -name "*.q"
./book.q
./stop.sh
./start.sh

Ищите файлы, которые заканчиваются на .sh и начинаются на s.

➜  test find . -name "*.sh" -a -name "s*"
./stop.sh
./start.sh

Просмотр после вставки содержимого в файл.

➜  test ll
总用量 12K
-rw-r--r-- 1 root root  9 11月  4 15:10 book.q
-rw-r--r-- 1 root root 13 11月  4 15:10 start.sh
-rw-r--r-- 1 root root  4 11月  4 15:10 stop.sh
-rw-r--r-- 1 root root  0 11月  4 14:56 xq1.txt.bak
-rw-r--r-- 1 root root  0 11月  4 14:56 xq2.txt.bak
-rw-r--r-- 1 root root  0 11月  4 14:56 xq.txt.bak

Просмотр файлов /etc больше 40k и меньше 50k

➜  test find /etc/ -size +40k -a -size  -50k
/etc/selinux/targeted/active/modules/100/sysadm/hll
/etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin

Запланированные задачи

Когда дело доходит до планирования, на ум приходит время, когда дело доходит до задач, на ум приходит то, что делать. Это что делать, когда. Во сколько вы ходите на работу и во сколько уходите с работы каждый день. Каждый год Национальный день и Новый год отмечаются в фиксированный момент времени. Подобно этим, мы можем назвать их временными задачами.

Например, иногда. Уже почти пора уходить с работы, у лидера срочное задание, Сяо Ван, работа сверхурочно. Завтра у меня хорошее настроение, возьму выходной для интервью. Это временная задача.

Так как же нам сделать эти две вещи в Linux?

тип задачи

Время: выполнение чего-либо неоднократно и непрерывно в течение определенного периода времени.

Временная: задача завершается после одного выполнения, только один раз.

Команда, соответствующая типу задачи

crontab (задание на время): Цикл удушья в соответствии с указанным периодом.

at (временная задача): задача, которая завершается после выполнения.

использование в

Команда: в

Синтаксис: во время

Общие параметры:

         -l    查看任务列表
         -c   查看任务详情

работать: Проверьте, включена ли служба

[root@iz2ze0ajic0vbv28hcdctpz ~]# systemctl status atd
● atd.service - Job spooling tools
  Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
  Active: active (running) since 二 2018-11-13 11:50:47 CST; 1 day 9h ago
Main PID: 491 (atd)
  CGroup: /system.slice/atd.service
          └─491 /usr/sbin/atd -f

11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Started Job spooling tools.
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Starting Job spooling tools...

Несколько способов постановки задач: Создать задачу (по умолчанию сегодня, если время больше текущего, она будет создана на следующий день)

[root@iz2ze0ajic0vbv28hcdctpz ~]# ls
soft
[root@iz2ze0ajic0vbv28hcdctpz ~]# at 21:17
at> mkdir sk
at> <EOT>
job 6 at Wed Nov 14 21:17:00 2018

Создано в указанное время:

[root@iz2ze0ajic0vbv28hcdctpz ~]# at 20:00 2018-11-19
at> mkdir happy
at> <EOT>
job 7 at Mon Nov 19 20:00:00 2018

Добавить время с этого момента:

[root@iz2ze0ajic0vbv28hcdctpz ~]# at now + 3min
at> mkdir hello
at> <EOT>
job 8 at Wed Nov 14 21:41:00 2018

Выполнить завтра в 11:11

[root@iz2ze0ajic0vbv28hcdctpz ~]# at 11:11 tomorrow
at> mkdir world
at> <EOT>
job 9 at Thu Nov 15 11:11:00 2018

Казнен в 15:24 через 2 дня.

[root@iz2ze0ajic0vbv28hcdctpz ~]# at 3:24 pm +2 days
at> mkdir new
at> <EOT>
job 11 at Fri Nov 16 15:24:00 2018

Просмотр списка задач (отображение невыполненных задач)

[root@iz2ze0ajic0vbv28hcdctpz ~]# atq
5  Thu Nov 15 21:11:00 2018 a root

Просмотр информации об одной задаче: (удалить часть информации из-за большего содержания)

[root@iz2ze0ajic0vbv28hcdctpz /]# at -c 7
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=243; export XDG_SESSION_ID
HOSTNAME=iz2ze0ajic0vbv28hcdctpz; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=113.46.167.195\ 17211\ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
MAVEN_HOME=/usr/local/apache-maven-3.6.0; export MAVEN_HOME
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/local/apache-maven-3.6.0/bin:/usr/local/jdk1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/root; export PWD
JAVA_HOME=/usr/local/jdk1.8.0_191; export JAVA_HOME
LANG=zh_CN.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
CLASSPATH=.:/lib/dt.jar:/lib/tools.jar; export CLASSPATH
SSH_CONNECTION=113.46.167.195\ 17211\ 172.17.187.244\ 22; export SSH_CONNECTION
LC_CTYPE=zh_CN.UTF-8; export LC_CTYPE
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
cd /root || {
  echo 'Execution directory inaccessible' >&2
  exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER550b4fbb'
mkdir happy

marcinDELIMITER550b4fbb

Объяснение параметра:

5 : номер задачи

Чт ноя 15 21:11:00 2018 : Время

очередь

root : исполняющий пользователь

Удалить задачи:

Посмотрим, какие задачи

[root@iz2ze0ajic0vbv28hcdctpz /]# atq
7  Mon Nov 19 20:00:00 2018 a root
5  Thu Nov 15 21:11:00 2018 a root
11  Fri Nov 16 15:24:00 2018 a root
9  Thu Nov 15 11:11:00 2018 a root
12  Wed Nov 14 22:11:00 2018 a root

Удалить задачу с номером задачи 12

[root@iz2ze0ajic0vbv28hcdctpz /]# atrm 12
[root@iz2ze0ajic0vbv28hcdctpz /]# atq
7  Mon Nov 19 20:00:00 2018 a root
5  Thu Nov 15 21:11:00 2018 a root
11  Fri Nov 16 15:24:00 2018 a root
9  Thu Nov 15 11:11:00 2018 a root

Обработка запланированных задач

Cron — это инструмент для выполнения задач по времени в Linux, crondtab — это команда периодического выполнения, а crond — это демон для выполнения задач по времени.

запуск службы
 查看服务是否启动
[root@iz2ze0ajic0vbv28hcdctpz ~]# systemctl status crond
● crond.service - Command Scheduler
  Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
  Active: active (running) since 二 2018-11-13 11:50:47 CST; 1 day 10h ago
Main PID: 489 (crond)
  CGroup: /system.slice/crond.service
          └─489 /usr/sbin/crond -n

11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Started Command Scheduler.
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Starting Command Scheduler...
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz crond[489]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 7...ed.)
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz crond[489]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.
如果没有启动,执行
systemctl start crond
systemctl enable crond
команда кронтаб

Синтаксис: параметр crontab

Общие параметры:

        crontab -u   #指定用户的cron信息
        crontab -l   #列出当前用户下的cron服务的信息
        crontab -u user -l   #列出指定用户的cron服务的信息
        crontab -r   #删除cron服务
        crontab -e   #编辑cron服务
        crontab -r -u user   #删除指定用户的定时任务

работать:

отредактировать службу cron

[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -e
crontab: installing new crontab

Просмотр содержимого задачи текущего пользователя

[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -l
22 22 22 * * mkdir /linux/test

удалить задачу

[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -r
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -l
no crontab for root

Просмотр содержания задачи пользователя qa

[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -l
22 22 22 * * mkdir /linux/test

Удалить запланированное задание под пользователем qa

[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -r
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -l
no crontab for qa
Системные задачи

Файл конфигурации планирования задач системы находится в папке /etc/crontab.

[root@iz2ze0ajic0vbv28hcdctpz ~]# ll /etc/crontab
-rw-r--r-- 1 root root 451 Nov 15 07:49 /etc/crontab

Вы можете добавлять системные задачи прямо в /etc/crontab (не рекомендуется)

[root@iz2ze0ajic0vbv28hcdctpz ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Каталог, связанный с запланированными задачами

[root@iz2ze0ajic0vbv28hcdctpz etc]# ll cr
cron.d/       cron.deny     cron.monthly/ cron.weekly/
cron.daily/   cron.hourly/  crontab       crypttab

Объяснение роли каталога:

cron.d/       是系统自动定期需要做的任务(不是按照时,分,秒等时间周期执行的)
cron.deny   在该文件内的用户无法做计划任务
其他文件为不同周期的执行脚本。
Правила запланированных задач

Сначала посмотрите на формат задачи (как показано на рисунке):

Некоторые специальные символы времени:

Вот некоторые примеры:

#每晚的20:30重加载nginx
30 20 * * * /usr/local/nginx/sbin/nginx -s reload 

#每月1、10、15日的5:30重加载nginx
30 5 1,10,15 * * /usr/local/nginx/sbin/nginx  -s reload  

#每天20: 00至22 : 00之间每隔30分钟重加载nginx
0,30 20-22 * * * /usr/local/nginx/sbin/nginx -s reload 

每星期六的10 : 00 pm 重加载nginx
0 22* * 6 /usr/local/nginx/sbin/nginx  -s reload 

#每一小时重加载一次nginx
0 */1 * * * /usr/local/nginx/sbin/nginx -s reload 

expect

Много раз наше взаимодействие с linux требует ручного вмешательства. Иногда нам может понадобиться инструмент, который может взаимодействовать с linux без ручного вмешательства. Здесь мы вводим ожидаемый инструмент. В этом резюме мы в основном говорим о том, как использовать ожидание.

Введение ожидать

TCL (язык команд инструментов) — это язык, похожий на скрипт оболочки, вы можете использовать его для выполнения многих операций, expect разработан на его основе, expect также предоставляет некоторые команды, которых нет в tcl. Если вы хотите написать сценарий, который автоматически обрабатывает ввод и вывод, я рекомендую выбрать expect.

установить ожидать

yum install -y expect

ожидать использования

1.定义脚本执行使用的shell。

     #!/usr/bin/expect


2.设置超时时间,单位为秒,timeout -1 为永不超时。

        set timeout 2

3.壳子

       spawn需要在expect环境下运行,用来传递交互指令。

 4.expect命令

       判断输出结果是否包含某字符串,没有立即返回,否则就等一段时间后返回,用timeout设置等待时间。

5.send

        执行交互动作,将交互要执行的动作进行输入给交互指令。命令字符串结尾要加上"\r",如果出现异常等待的状态可以进行核查。

6.exp_continue

         继续执行接下来的交互操作。

7.interact

        执行后保持交互状态,把控制权交给控制台,如不加interact,交互完成会自动退出。
Вход на сервер по ssh без пароля

Сценарий действия

➜  batch cat sf
#!/usr/bin/expect -f
spawn ssh  root@ip
expect {
"yes/no" { send "yes\r";exp_continue}
"*password:" { send "passwordstr\r" }
}
interact

Выполнить для просмотра результатов, вход выполнен успешно

➜  batch ./35
spawn ssh root@ip
root@ip's password:
Last login: Sat Jan  5 10:15:56 2019 from 113.46.187.213

Welcome to Alibaba Cloud Elastic Compute Service !

Это только верхушка льда Linux, редактор все еще в пути и будет продолжать обновляться. . . ⛽️

В этой статье используетсяmdniceнабор текста