分类 linux 下的文章

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*"));

- 阅读剩余部分 -

我们在查看系统所有进程的进程树可以使用 pstree, 例如:

root@server:/etc/X11# pstree                          
systemd─┬─VBoxService─┬─{automount}                                
        │             ├─{control}                                  
        │             ├─{cpuhotplug}                               
        │             ├─{memballoon}                               
        │             ├─{timesync}                                
        │             ├─{vminfo}                                   
        │             └─{vmstats}                                  
        ├─accounts-daemon─┬─{gdbus}                                
        │                 └─{gmain}                                
        ├─acpid                                                    
        ├─atd                                                      
        ├─cgmanager                                                
        ├─cron                                                     
        ├─dbus-daemon                                              
        ├─dhclient                                                 
        ├─dhcpd                                                   
        ├─dnsmasq───dnsmasq                                        
        ├─3*[dynomite───2*[{dynomite}]]                            
        ├─epmd                                                     
        ├─in.tftpd                                                 
        ├─irqbalance                                               
        ├─2*[iscsid] 
......

而对于某个目录, 我们想知道目录树下的大致结构以及目录下的文件布局信息, 我们可以使用 tree 命令, tree 非系统核心包, 需要手动安装:

- 阅读剩余部分 -

在Linux环境下, 经常会接触到一些压缩文件, 常见的有 tar/tar.gz/xz/zip等等,这些文件我们到底该如何解压文件和压缩文件呢? 下面我们介绍下不同工具的使用方式.

tar

tar 将目录归档为一个文件,其自身并不压缩内容,因此一般 tar 文档偏大.

  • 归档一个目录 tar cvf filename.tar dirname
  • 展开一个归档 tar xvf filename.tar

常用的一些可选项的含义:

  • c 创建归档文件
  • v 输出详细信息
  • f 指定归档文件

tar 命令能解压压缩后的归档文件,需要指定不同的参数

  • gzip 压缩文件解压 tar xvfz filename.tar.gz
  • bz2 压缩文件解压 tar xvfj filename.tar.bz2
  • xz 压缩文件解压 tar xvfJ filename.tar.xz

- 阅读剩余部分 -

当我们要统计目录的使用情况时, du 工具专门用于统计目录的磁盘使用情况, 接下来我们就看看 du 命令的一些常规使用场景

统计当前目录的磁盘使用情况

du --si -s .
  • --si 以便于人阅读的单位来统计大小,
  • -s 递归统计目录下的所有内容

统计当前目录下的一级目录的大小

du --si -d1 | sort -h
  • -d 选项指定统计深度, 这里仅统计1级目录
  • -h sort命令的 -h 选项, 已便于使用者阅读的格式排序

- 阅读剩余部分 -

我们在命令行下,有时候需要了解两个文件的异同,比如和配置文件的备份文件对比. Linuxdiff 工具将非常方便的来解决我们的需求.

二进制文件的对比

对于二进制文件的对比, diff 仅仅只是提示两个文件是否异同, 如果相同, 将不输出任何内容, 实验环境是 Ubuntu 18.04, 我们对比下 /bin/sh/bin/bash/bin/dash, Ubuntu 最新版本 /bin/sh 使用的是 /bin/dash, 而不是早前的 /bin/bash.

root@server:~# diff /bin/sh /bin/bash
/bin/sh and /bin/bash differ
root@server:~# diff /bin/sh /bin/dash

- 阅读剩余部分 -

Redis持久化

Redis提供了不同级别的持久化方式:

  • RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.
  • AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.
  • 如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.
  • 你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.

最重要的事情是了解RDB和AOF持久化方式的不同,让我们以RDB持久化方式开始:

- 阅读剩余部分 -