首先我们来学习PID这个概念,PID全称Process ID,是标识和区分进程的ID,它是一个全局唯一的正整数。原来Hello World进程运行时也有一个PID,只是它运行结束后PID也释放了,我们可以通过print_pid.go程序显示当前进程的PID。示例程序程序print_pid.go的源码如下,通过Getpid()函数可以获得当前进程的PID。
根据维基百科的定义,进程(Process)是计算机中已运行程序的实体。用户下达运行程序的命令后,就会产生进程。进程需要一些资源才能完成工作,如CPU使用时间、存储器、文件以及I/O设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。我们简单总结下,进程就是代码运行的实体。
Thanks Wawa LeungOtherwise the book would be released two years ago
本书为开源电子书
一提到操作系统,我们首先想到的就是windows和Linux。Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。相比较Windows来说,Linux的很多管控都需要用命令来操作。
近几年,云原生领域飞速发展,K8s成为公认的云操作系统。容器的高频率部署、短暂的生命周期、复杂的网络路由,都给内核安全带来了新的挑战。系统内核面对的复杂性在不断增长,在满足性能、可扩展性等新需求的同时,还需要保障系统稳定可用,这是极其困难的事情。此时,eBPF出现,它以较小的子系统改动,保障了系统内核的稳定,还具备实时动态加载的特性,能将业务逻辑加载到内核,实现热更新的动态执行。
阿里云开源镜像站利用云服务上的优势,提供快速、稳定的镜像分发服务、和免费的CDN加速服务。更新频率高,基本上一天一更新,对于Centos/Ubuntu/pypi等核心仓库2小时一更新。开源镜像站每天承载着几亿的下载量,为千万的开发者持续提供不间断的服务。根据各操作系统镜像站后台下载量,阿里云镜像站统计了2021年最受欢迎的Linux桌面操作系统,仅根据调用量排名,供大家参考。排位最高的还是Centos,受中国Linux用户欢迎的Ubuntu、Debian均进入了前十,国内的优麒麟操作系统排在第7位。
tar 命令用于创建 .tar、.tar.gz、.tgz 或 tar.bz2 档案,通常称为“tarball”。扩展名 .tar.gz 和 .tgz 用于识别使用 gzip 压缩生成的档案,以减少档案的大小。 扩展名为 .tar.bz2 的档案是使用 bzip2 压缩生成的。
所有的计算机程序都是用来和数据打交道的。在过去的章节中,我们专注于处理文件级别的数据。然而,许多程序问题需要使用更小的数据单位来解决,比方说字符串和数字。在这一章中,我们将查看几个用来操作字符串和数字的 shell 功能。shell 提供了各种执行字符串操作的参数展开功能。
现在我们的程序还缺少一种本领,就是接收和处理命令行选项和参数的能力。在这一章中,我们将探究一些能让程序访问命令行内容的 shell 性能。访问命令行shell 提供了一个称为位置参数的变量集合,这个集合包含了命令行中所有独立的单词。这些变量按照从0到9给予命名。可以以这种方式讲明白:#!
随着我们的脚本变得越来越复杂,当脚本运行错误,执行结果出人意料的时候, 我们就应该查看一下原因了。在这一章中,我们将会看一些脚本中出现地常见错误类型,同时还会介绍几个可以跟踪和消除问题的有用技巧。语法错误一个普通的错误类型是语法。语法错误涉及到一些 shell 语法元素的拼写错误。大多数情况下,这类错误会导致 shell 拒绝执行此脚本。
到目前为止我们编写的脚本都缺乏一项在大多数计算机程序中都很常见的功能-交互性。也就是,程序与用户进行交互的能力。虽然许多程序不必是可交互的,但一些程序却得到益处,能够直接接受用户的输入。以这个前面章节中的脚本为例:#!/bin/bash# test-integer2: evaluate the value of an integer.INT=-5if [[ "$INT" =~ ^-?[0-9]+$ ]]; then if [ $INT -eq 0 ];
在这章中,我们继续着手于文本相关的工具,关注那些用来格式化输出的程序,而不是改变文本自身。这些工具通常让文本准备就绪打印,这是我们在下一章会提到的。
计算机系统管理员的一个主要任务就是保护系统的数据安全,其中一种方法是通过时时备份系统文件,来保护数据。即使你不是一名系统管理员,像做做拷贝或者在各个位置和设备之间移动大量的文件,通常也是很有帮助的。在这一章中,我们将会看看几个经常用来管理文件集合的程序。
在前面章节中,我们已经从文件级别看了操作数据。在这章里,我们将从设备级别来考虑数据。Linux 有着令人惊奇的能力来处理存储设备,不管是物理设备,比如说硬盘,还是网络设备,或者是虚拟存储设备,像 RAID(独立磁盘冗余阵列)和 LVM(逻辑卷管理器)。然而,这不是一本关于系统管理的书籍,我们不会试图深入地覆盖整个主题。
正如我们之前所讨论到的,shell 在 shell 会话中维护着大量的信息,这些信息称为 (shell) 环境。存储在 shell 环境中的数据被程序用来确定配置属性。然而大多数程序用配置文件来存储程序设置,某些程序也会查找存储在 shell 环境中的数值来调整他们的行为。知道了这些,我们就可以用 shell 环境来自定制 shell 经历。
在这之前,我们已经知道了一系列神秘的命令,每个命令都有自己奇妙的选项和参数。在这一章中,我们将试图去掉一些神秘性,甚至创建我们自己的命令。
既然我们已经知道了如何在文件系统中跳转,是时候开始 Linux 操作系统之旅了。然而在开始之前,我们先学习一些对研究Linux 系统有帮助的命令。ls — 列出目录内容file — 确定文件类型less — 浏览文件内容ls 乐趣有充分的理由证明,ls 可能是用户最常使用的命令。通过它,我们可以知道目录的内容,以及各种各样重要文件和目录的属性。
我们需要学习的第一件事(除了打字之外)是如何在 Linux 文件系统中跳转。在这一章节中,我们将介绍以下命令:pwd — 打印出当前工作目录名cd — 更改目录ls — 列出目录内容理解文件系统树类似于 Windows,一个“类 Unix” 的操作系统,比如说 Linux,以分层目录结构来组织所有文件。
一说到命令行,我们真正指的是 shell。shell 就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。几乎所有的 Linux 发行版都提供一个名为 bash 的来自 GNU 项目的 shell 程序。“bash” 是 “Bourne Again SHell” 的首字母缩写,所指的是这样一个事实,bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。
关注时代Java