Linux进阶命令合集

后台任务

我们的应用写好后,下一件事就是启动,让它一直在后台运行。

$ python main.py

这样就会有一个问题,一旦你退出命令行窗口,这个应用就一起退出了,无法访问了。

怎么才能让它变成系统的守护进程(daemon),成为一种服务(service),一直在那里运行呢?

使用&符号

只要在命令的尾部加上符号&,启动的进程就会成为”后台任务”。如果要让正在运行的”前台任务”变为”后台任务”,可以先按ctrl + z,然后执行bg命令(让最近一个暂停的”后台任务”继续执行)。

$ python main.py &

这样还会有一个问题,一旦你关闭了ssh连接,这个应用就有可能一起退出了,无法访问了。

使用nohub命令

$ nohup python main.py &

 nohup命令对server.js进程做了三件事。

  1. 阻止SIGHUP信号发到这个进程。
  2. 关闭标准输入。该进程不再能够接收任何输入,即使运行在前台。
  3. 重定向标准输出和标准错误到文件nohup.out。

也就是说,nohup命令实际上将子进程与它所在的 session 分离了。

注意,nohup命令不会自动把进程变为”后台任务”,所以必须加上&符号。

 使用screen命令

Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

 它可以在当前 session 里面,新建另一个 session。这样的话,当前 session 一旦结束,不影响其他 session。而且,以后重新登录,还可以再连上早先新建的 session,在同一个终端里面,管理多个session

# 新建一个session并指定名称
$ screen -S name
# 按下ctrl + a + d,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
# 切回指定 session
$ screen -r name
$ screen -r pid_number
# 如果要停掉某个 session,可以先切回它,然后按下ctrl + c和ctrl + d
# ctrl + a + k,强行关闭当前的 window
# 列出所有 session
$ screen -ls

  使用Systemd

除了专用工具以外,Linux系统有自己的守护进程管理工具 Systemd 。它是操作系统的一部分,直接与内核交互,性能出色,功能极其强大。我们完全可以将程序交给 Systemd ,让系统统一管理,成为真正意义上的系统服务。

 具体使用查看:Linux Systemd 服务管理教程

Linux find 命令

Linux find 命令用于在指定目录下查找文件和目录,它可以使用不同的选项来过滤和限制查找的结果。

语法

 find [路径] [匹配条件] [动作]
  • 路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
  • 匹配条件:可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
  • 动作: 可选参数,用于对匹配到的文件执行操作,比如删除、复制等。

匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 * 和 ?。
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 – 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 + 或 – 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。

 find 命令中用于时间的参数如下:

  • -amin n:查找在 n 分钟内被访问过的文件。
  • -atime n:查找在 n*24 小时内被访问过的文件。
  • -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
  • -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
  • -mmin n:查找在 n 分钟内被修改过的文件。
  • -mtime n:查找在 n*24 小时内被修改过的文件。

在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

案例

# 查找当前目录下名为 file.txt 的文件:
find . -name file.txt

# 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"

# 将当前目录及其子目录中的所有文件列出:
find . -type f

# 查找 /home 目录下大于 1MB 的文件:
find /home -size +1M

# 查找 /var/log 目录下在 7 天前修改过的文件:
find /var/log -mtime +7

# 查找过去 7 天内被访问的文件:
find /path/to/search -atime -7

 Linux df/du 命令

df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

du(英文全拼:disk usage)命令用于显示目录或文件的大小。

df案例

root@ip-172-31-16-69:/opt/wordpress# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  4.4G   25G  15% /
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           190M  1.1M  189M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
overlay          29G  4.4G   25G  15% /var/lib/docker/overlay2/453fc940cacf3dcd82b8ba6431597ed97ff62714a1dbb856cd119dfaf88edf12/merged
overlay          29G  4.4G   25G  15% /var/lib/docker/overlay2/0957f9893a8cc9ec19216a99cc497ebd34f181b4a50f449fc11bdd997b240560/merged
root@ip-172-31-16-69:/opt/wordpress# 

du语法

du [选项][文件]

du选项

-a, --all                              显示目录中个别文件的大小。
-B, --block-size=大小                  使用指定字节数的块
-b, --bytes                            显示目录或文件大小时,以byte为单位。
-c, --total                            除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D, --dereference-args                 显示指定符号链接的源文件大小。
-H, --si                               与-h参数相同,但是K,M,G是以1000为换算单位。
-h, --human-readable                   以K,M,G为单位,提高信息的可读性。
-k, --kilobytes                        以KB(1024bytes)为单位输出。
-l, --count-links                      重复计算硬件链接的文件。
-m, --megabytes                        以MB为单位输出。
-L<符号链接>, --dereference<符号链接>  显示选项中所指定符号链接的源文件大小。
-P, --no-dereference                   不跟随任何符号链接(默认)
-0, --null                             将每个空行视作0 字节而非换行符
-S, --separate-dirs                    显示个别目录的大小时,并不含其子目录的大小。
-s, --summarize                        仅显示总计,只列出最后加总的值。
-x, --one-file-xystem                  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>, --exclude-from=<文件>        在<文件>指定目录或文件。
--apparent-size                        显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大。
--files0-from=F                        计算文件F中以NUL结尾的文件名对应占用的磁盘空间如果F的值是"-",则从标准输入读入文件名
--exclude=<目录或文件>                 略过指定的目录或文件。
--max-depth=N                          显示目录总计(与--all 一起使用计算文件)当N为指定数值时计算深度为N,等于0时等同--summarize
--si                                   类似-h,但在计算时使用1000 为基底而非1024
--time                                 显示目录或该目录子目录下所有文件的最后修改时间
--time=WORD                            显示WORD时间,而非修改时间:atime,access,use,ctime 或status
--time-style=样式                      按照指定样式显示时间(样式解释规则同"date"命令):full-iso,long-iso,iso,+FORMAT
--help                                 显示此帮助信息并退出
--version                              显示版本信息并退出

du案例

文件从大到小排序

root@ip-172-31-16-69:/opt/wordpress# du -sh * |sort -rh
237M	admin
152K	opswizs_php
20K  	html
4.0K	xxx.txt
4.0K	run_wizops.sh
4.0K	run_opswizs.sh
4.0K	php.ini
root@ip-172-31-16-69:/opt/wordpress# 

 查看原文:Linux进阶命令合集

 关注公众号 "字节航海家" 及时获取最新内容

Linux进阶命令合集_第1张图片

你可能感兴趣的:(linux,运维,服务器)