分类 操作系统 下的文章

Linux 是个多用户操作系统,在操作系统上,有非常多用户, 同时为了便于同类用户的管理,有一系列的用户组。每个用户,都有自己的名称和ID, 称为 uid。每个用户组同样也有其名称和ID,称为 gid。每个用户至少从属于一个用户组,每个用户皆从属于一个主组。各个 Linux 发行版默认的管理账户为 root, uid0.

展示用户基本信息

id 命令用于展示用户 uidgidgroups

root@server:~# id root 
uid=0(root) gid=0(root) groups=0(root)

- 阅读剩余部分 -

前面我们介绍过, 通过 top 或者 htop 命令能够查看服务器的物理机内存和 Swap 的使用情况, 除了这两种工具, 我们其实还会有些其他工具,完成类似的任务.

free 命令用于显示内存的使用信息, 比如

root@server:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        1.5G        1.1G        5.9M        1.3G        2.1G
Swap:          974M          0B        974M

除了类似 top 命令显示的 totalusedfreebuff/cache,还显示了 sharedavailable等信息。

这里有些内存概念需要我们知道:

  • Cache 作为加载到内存中的磁盘数据,用于快速访问。
  • Swap 是磁盘上的交换分区,被系统用来在物理内存紧张的情况下, 将使用频率低的内存页面交换到磁盘, 以便释放更多物理内存给系统使用。

- 阅读剩余部分 -

前一篇文章介绍了 top 命令的一些使用方式, top 命令相对来说是个很古老的命令了, 某些场景下,表现并不好, 因此社区为了改变这一现状, 新开发了 htop 命令, 我们先来认识下 htop:

htop

htop 在顶部区域更直观的列出所有CPU/内存/Swap等等使用信息, 同时列出所有进程信息, 以及线程使用信息. 提供简单便捷的方式对内容进行排序/搜索/标记/关闭进程等等处理.

大多数发行版上 htop 均未作为默认包安装, 需要用户手动安装

  • Debian/Ubuntu
apt -y install htop
  • RHEL/CentOS
yum -y install htop

- 阅读剩余部分 -

top 是一个命令行程序, 用于实时监视系统的运行情况, top 命令展示的信息比较丰富, 我们分类介绍下, 先来看看top命令展示的信息

root@server:~# top                                                                                                                                                                                                       [2/1909]
top - 18:41:48 up 1 day,  2:21,  3 users,  load average: 0.12, 0.08, 0.09 
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie      
%Cpu(s):  1.1 us,  0.2 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4045996 total,  1009596 free,  1579968 used,  1456432 buff/cache
KiB Swap:   998396 total,   998396 free,        0 used.  2164548 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                   
 1627 rabbitmq  20   0 2205672  57648   5204 S   3.3  1.4  67:14.58 beam.smp
23655 root      20   0       0      0      0 S   0.3  0.0   0:04.69 kworker/0:1
    1 root      20   0   38068   6032   3948 S   0.0  0.1   0:02.93 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.43 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S   0.0  0.0   2:11.68 rcu_sched
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      rt   0       0      0      0 S   0.0  0.0   0:00.24 migration/0
   10 root      rt   0       0      0      0 S   0.0  0.0   0:01.31 watchdog/0
   11 root      rt   0       0      0      0 S   0.0  0.0   0:01.26 watchdog/1
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.24 migration/1
   13 root      20   0       0      0      0 S   0.0  0.0   0:02.09 ksoftirqd/1
   15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H

......

- 阅读剩余部分 -

ps 命令用于展示进程信息,在查看进程是否存在,或者进程的启动命令,或者是进程运行环境信息。

查看所有进程, 仅包含进程名称

root@server:~# ps -e   
  PID TTY          TIME CMD         
    1 ?        00:00:02 systemd     
    2 ?        00:00:00 kthreadd 
    3 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 kworker/0:0H
    7 ?        00:01:49 rcu_sched
    8 ?        00:00:00 rcu_bh 
    9 ?        00:00:00 migration/0
   10 ?        00:00:01 watchdog/0  
   11 ?        00:00:01 watchdog/1  
   12 ?        00:00:00 migration/1    
   13 ?        00:00:01 ksoftirqd/1 
   15 ?        00:00:00 kworker/1:0H
   16 ?        00:00:01 watchdog/2     
   17 ?        00:00:00 migration/2
   18 ?        00:00:00 ksoftirqd/2
   20 ?        00:00:00 kworker/2:0H
   21 ?        00:00:00 watchdog/3 
   22 ?        00:00:00 migration/3
   23 ?        00:00:00 ksoftirqd/3
   25 ?        00:00:00 kworker/3:0H
   26 ?        00:00:00 kdevtmpfs

......

- 阅读剩余部分 -

Linux 上启动一个程序, 我们可能经常通过前台启动, 但是前台启动之后, 终端被占用, 不能同时开展其他工作, 因此就希望将程序变成后台运行,接下来我们介绍下, 类似场景的任务控制.

任务控制实际是Shell程序提供的功能,使用更多的是bash/sh,当然还有其他Shell程序,比如tcshkshcsh等, 对任务管理功能各个实现都大致类似, 这里我们主要介绍接触最多的 bash Shell。

  • cmd & 让程序后台运行
  • Ctrl + c 关闭当前前台运行程序(一般是发送SIGINT给程序处理)
  • Ctrl + z 终端当前前台运行程序(一般是发送SIGTSTP给程序处理)
  • jobs 查看所有后台运行程序
  • bg %number 将程序切换到后台运行
  • fg %number 将后台运行程序切换到前台运行
  • disown %number 将任务从当前的任务表中移除,移除后程序依然在后端运行,只是不被当前会话管理。

- 阅读剩余部分 -

rsync 是个远程同步工具, 允许单向复制或者更新内容到远程服务器,要求远程服务器也必须安装rsync,Linux平台上发行版默认都自带.

拷贝 ~/backup 复制到远程用户目录下

rsync -z -a -v -t --delete --rsh="ssh -l linuxcoming" ~/backup/ root@192.168.56.10:~/
  • -a 归档模式, 将文档所有元信息(所有者/权限/时间)同步到远程服务器
  • -z 开启压缩选项, 压缩后在传输到远端
  • -v 开启详细日志(verbose), 打印正在执行的内容
  • -t 将时间戳同步到远端, 如果不添加该参数, rsync 将更新文件的时间戳, rsync 使用时间戳来检查文件是否需要更新.
  • --delete 如果文件/目录在原始目录中不存在, 将删除它.

- 阅读剩余部分 -

Linux 平台上不同发行版的包管理不一样, 因此工具的使用也有区别, 这里我们介绍下常见的一些发行版系统包管理的流程, 顺带也介绍下 FreeBSD 的包管理机制.

Debian/Ubuntu

在基于 Debian 的发行版上一般使用 apt-get 工具来对软件包进行管理, 当然也有些变种, 比如 apt/aptitute, 使用起来有些区别, 但是核心功能基本一致, 一般还需要配合 apt-cache, dpkg等等工具

安装软件包

apt-get install package_name

卸载软件包

卸载的过程中, 不清理配置文件

apt-get remove package_name

或者

卸载时同时卸载软件和其配置文件

apt-get purge package_name

- 阅读剩余部分 -

分割字符串是一种非常常见的操作,本教程主要介绍一些我们可以在Java中简单使用的API。

String.split()

让我们从核心库开始,String类本身提供了一个split()方法——这对于大多数场景都非常方便和充分。它只是根据分隔符分割给定的字符串,返回字符串数组。

String[] splitted = "peter,james,thomas".split(",");

String[] splitted = "car jeep scooter".split(" ");

String[] splitted = "192.168.1.178".split("\\.")

String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));

- 阅读剩余部分 -