1.1 基础命令

[TOC]

修改主机名

hostnamectl set-hostname test.cn

环境变量

  1. 永久生效

     vim /etc/profile
     source /etc/profile
    
  2. 暂时生效

     export PATH=$PATH:/usr/local/MATLAB/R2013a/bin
    
  3. 只对当前用户永久生效

      vim ~/.bash_profile
      source ~/.bash_profile
    

压缩命令

  1. unzip

     # 解压到当前目录
     unzip *.zip
     # 解压到指定目录,不覆盖
     unzip -n *.zip -d /tmp
     # 解压到指定目录,覆盖
     unzip -o *.zip -d /tmp
    
  2. tar

     # 解压
     tar -zxvf *.tar.gz
     # 压缩
     tar -zcvf *.tar.gz
     # 查看
     tar -ztvf *.tar.gz
    

安装fpm

yum -y install ruby rubygems ruby-devel
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources --remove https://rubygems.org/
gem install fpm

打包时出现报错Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}

安装rpm工具

yum install -y rpm-build

分区操作

lvm相关操作1

# 查看pv
pvs
pvscan
pvdisplay
# 查看vg
vgs
vgscan
vgdisplay
# 查看lvm分区
lvs
lvscan
lvdisplay

查看磁盘使用

df -h

查看分区使用

fdisk -l

lvm分区及挂载

# 查看块设备信息
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 512M 0 part /boot
├─sda3 8:3 0 200M 0 part /boot/efi
└─sda4 8:4 0 2T 0 part
    ├─vg_cobbler-lv_root 253:0 0 512G 0 lvm /
    └─vg_cobbler-lv_swap 253:1 0 16G 0 lvm [SWAP]

# 查看vgs的空余大小
[root@localhost /]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_cobbler 1 3 0 wz--n- <2.00t <1.5t

# 创建lvm分区并挂载到data01
# 1. 根据vg:vg_cobbler的空闲大小创建lvm
[root@localhost /]# lvcreate -L 1.48t -n lv_data01 vg_cobbler
Logical volume "lv_data01" created.

# 2. 格式化lvm分区
[root@localhost /]# mkfs.ext4 /dev/vg_cobbler/lv_data01
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1245184 inodes, 4980736 blocks
249036 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
152 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# 3. 挂载lvm分区到/data01
[root@localhost /]# mount /dev/vg_cobbler/lv_data01 /data01

# 4. 添加开机自动挂载配置
[root@localhost /]# vim /etc/fstab
/dev/vg_cobbler/lv_data01 /data01 ext4 defaults 0 0

# 再次查看块设备信息
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 512M 0 part /boot
├─sda3 8:3 0 200M 0 part /boot/efi
└─sda4 8:4 0 2T 0 part
    ├─vg_cobbler-lv_root 253:0 0 512G 0 lvm /
    ├─vg_cobbler-lv_swap 253:1 0 16G 0 lvm [SWAP]
    └─vg_cobbler-lv_data01 253:2 0 1.5T 0 lvm

# 查看文件系统    
[root@localhost /]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vg_cobbler-lv_root    504G   59G  420G  13% /
devtmpfs                           63G     0   63G   0% /dev
tmpfs                              63G   28K   63G   1% /dev/shm
tmpfs                              63G  178M   63G   1% /run
tmpfs                              63G     0   63G   0% /sys/fs/cgroup
/dev/sda2                         488M  114M  339M  26% /boot
/dev/sda3                         200M  8.0K  200M   1% /boot/efi
/dev/mapper/vg_cobbler-lv_data01  1.5T  9.2G  1.4T   1% /data01
tmpfs                              13G     0   13G   0% /run/user/0

硬盘格式化并挂载

# 查看块设备信息
[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sr0              11:0    1 1024M  0 rom
# 可以看到sdb和sdc为未挂载的硬盘

# 格式化sdb并挂载到/data01
# 1. 创建/data01目录
[root@localhost /]# mkdir /data01

# 2. 快速格式化sdb
[root@localhost /]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# 3. 挂载到/data01
[root@localhost /]# mount /dev/sdb /data01

# 4. 添加开机自动挂载配置
[root@localhost /]# vim /etc/fstab
/dev/sdb /data01 ext4 defaults 0 0

# 再次查看块设备信息
[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk /data01
sdc               8:32   0   20G  0 disk 
sr0              11:0    1 1024M  0 rom 
# 查看文件系统
[root@localhost /]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G   15G  2.4G  87% /
/dev/sda1               1014M  234M  781M  23% /boot
/dev/sdb                  20G   45M   19G   1% /data01

分区调整

首先确认系统在安装时, 根和/home是否做的是lvm, 如果做了lvm, 那就可以在线进行根分区的扩容3: 1) 先用vgdisplay 查看系统是否有空间空间, 如果还有, 就扩容到根分区. 2) 如果系统没有空闲空间, 就只能从其他lvm分区上缩减出一定的空间, 然后扩容到根分区. 3) 你的/home分区是xfs格式的,缩容之前, 需要先关闭该分区上部署的应用, 把有用数据拷贝到别的分区上, 接着进行缩容, 缩容后重新挂载, 然后再把数据拷贝回来, 重启应用.最后再将/home分区缩容出来的空间在线扩容到根分区上.

使用lvresize调整分区大小后,务必使用xfs_growfs应用分区调整(用词不一定准确,待修改)。

# 压缩home lvm分区30G大小空间,调整后必须对home重新格式化才能使用,不然会报错
lvresize -L -30G /dev/mapper/centos-home
# 增加root lvm分区30G大小空间
lvresize -L +30G /dev/mapper/centos-root
# 或
lvextend -L +30G /dev/mapper/centos-root
# 此时使用lvs命令可以看到lvm分区的大小实现了调整,但是df查看文件系统块的大小却没有发现变化

# 调整xfs格式的root lvm分区文件块,xfs_growfs只支持分区增加容量
xfs_growfs /dev/mapper/centos-root

# 如果xfs使用resize2f调整分区文件块会报错
resize2fs /dev/mapper/centos-root
> resize2fs 1.42.9 (28-Dec-2013)
> resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root
> Couldn't find valid filesystem superblock.

删除lvm分区

# 卸载文件系统
umount /dev/centos/home

lvremove /dev/centos/home

强制取消挂载

 # 查看目录占用
 fuser -m /home
 # 解除占用
 fuser -kvm /home
 # 强制取消挂载
 umount -l /home

非LVM分区转化为LVM分区

https://blog.csdn.net/it_is_a_world/article/details/101081754

多个硬盘扩展为一个LVM

# 使用整个磁盘创建VG,设置PE大小为64M
[root@localhost /]# vgcreate vg_data /dev/vdb /dev/vdc -s 64M

# 查看PV
[root@localhost /]# pvs

# 查看VG
[root@localhost /]# vgs

# 查看VG详情
[root@localhost /]# vgdisplay vg_data

# 使用vg_data创建LV,大小为20T
[root@localhost /]# lvcreate -L 20T -n lv_data01 vg_data

[root@localhost /]# vgs

[root@localhost /]# lvs

[root@localhost /]# lvdisplay

# 格式化lv_data01
[root@localhost /]# mkfs.ext4 /dev/vg_data/lv_data01

# 创建data01
[root@localhost /]# mkdir /data01

# 挂载lv_data01到/data01
[root@localhost /]# mount /dev/vg_data/lv_data01 /data01

# 添加开机自动挂载配置
[root@localhost /]# vim /etc/fstab
>  /dev/vg_cobbler/lv_data01 /data01 ext4 defaults 0 0

# 再次查看块设备信息
[root@localhost /]# lsblk

# 查看文件系统    
[root@localhost /]# df -h

硬盘剩余空间扩展lvm

# 1.创建新分区
shell> fdisk /dev/xvdb                               #### 选择磁盘
Command (m for help): m                              #### 帮助
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help): n                               #### 创建新的分区
Command action
   e   extended
   p   primary partition (1-4)
p                                                     #### 创建主分区
Partition number (1-4):1                              #### 分区ID
First cylinder (1-65270, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-65270, default 65270): 
Using default value 65270

Command (m for help):t                                 #### 修改分区类型
Command (m for help):8e                                #### Linux lvm
Command (m for help):w                                 #### 保存修改
# 2. 创建新的pv卷
shell> pvcreate /dev/xvdb1/                            #### 创建新的pv卷
shell> pvs

# 3. 扩展vgs
shell> vgextend vg0 /dev/xvdb1

# 4. 扩展lvm
shell> lvextend -L +3G /dev/vg0/lv1
partprobe

su 与 sudo2

su

su [-lm] [-c 命令] [username]

参数:

-: 单纯使用-su -,代表使用login-shell的变量文件读取方式来登录系统;不加用户名,则代表切换为root的身份。

-l: 与-类似,但后面需要加欲切换的用户账号。也是login-shell的方式。

-m: -m-p是一样的,表示使用目前的环境设置,而不读取新用户的配置文件。

-c: 仅进行一次命令,所以-c后面可以加上命令。

sudo

仅需要自己的密码。

sudo [-b] [-u 新用户密码]

参数:

-b: 将后续的命令让系统自行执行,而不与目前的shell产生影响。

-u: 后面接欲切换的用户,若无则默认切换root。

可执行sudo的用户与文件/etc/sudoers有关,编辑该文件需用visudo命令。

添加sudo权限

chmod u+w /etc/sudoers

vim /etc/sudoers
  xxx ALL=(ALL) ALL

 chmod u-w /etc/sudoers

Login与non-login shell2

login shell: 取得bash时需要完整的登录流程。比如,要由tty1~tty6登录,需要输入用户的账号与密码,此时取得的bash就称为“login shell”。

non-login shell: 取得bash接口的方法不需要重复登录的举动。比如,以X Window登录Linux后,再以X的图形界面启动终端机,此时那个终端接口并没有需要再次输入账号与密码,那个bash的环境就称为non-login shell。在原本的bash环境下再次执行bash这个命令,同样也没有输入账号密码,那第二个bash(子进程)也是non-login shell。

端口

查看端口占用

lsof -i
lsof -i:22

netstat -tunlp | grep 8080
netstat –anp | grep 8080

netstat -nltp | grep 28293

开放端口

# firewall 
# 开放tcp 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放udp端口
firewall-cmd --zone=public --add-port=49999/udp --permanent
# 刷新加载端口配置
firewall-cmd --reload
# 查看开放端口
iptables -L -n

# iptables
iptables -t filter -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

关闭端口

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

RPM

# 导出目前安装的rpm
rpm -qa > list.txt

RPM假死

rm -f /var/lib/rpm/__db.00* #删除rpm数据文件
rpm --rebuilddb #重新rpm数据文件

查看网卡配置

# 看网关
netstat -rn
# 看netmask,dns
ifconfig -a
ip addr

查看网络流量

sar -n DEV 1 4

查看JDK安装

rpm -qa | grep jdk

Yum配置

查看源

yum repolist all

配置阿里源

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

配置光盘Yum源

# 挂载光盘
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /etc/yum.repos.d
# 备份原始源
mkdir backup
mv CentOS* backup
tar zcvf repos.backup.tar.gz backup
mv backup/CentOS-Media.repo .
# 修改源地址
vim CentOS-Media.repo
> file:///mnt/cdrom/
> enable=1
# 清除包缓存
yum clean all
# 生成缓存
yum makecache

Yum下载

yum upgrade --downloadonly --downloaddir=/opt/systemd systemd

yumdownloader 默认只下载指定的包,不下载其依赖,--resolve参数可以使其下载依赖,--destdir可以指定下载的目录。

yumdownloader --destdir ./ --resolve wget

yumdownloader --resolve --destdir ./ --resolve wget

下载RPM及依赖(不安装)

yum install --downloadonly --downloaddir=

创建自定义YUM源

yum -y install createrepo
createrepo -u -d  <rpm path>

LN

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

硬链接相当于对文件进行了备份,防止误删。

软链接相当于Windows的快捷方式。

touch f1
# 创建f1的一个硬链接文件f2
ln f1 f2
# 创建f1的一个软链接文件f3
ln -s f1 f3

时区

# 查看时区
date -R
# 修改时区为上海
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 停止同步
timedatectl set-ntp no

# 设置时间
timedatectl set-time "YYYY-MM-DD HH:MM:SS"

# 将硬件时钟调整为与本地时钟一致
timedatectl set-local-rtc 1
hwclock --systohc --localtime

# 开启/关闭 ntp
timedatectl set-ntp true/false

SSH

linux生成密钥

# 生成 rsa 密钥
# 新版本会生成
# -----BEGIN OPENSSH PRIVATE KEY-----
ssh-keygen -t rsa 

# 推荐,生成 rsa 密钥
# -----BEGIN RSA PRIVATE KEY-----
ssh-keygen -m PEM -t rsa -b 4096

参考

现在使用命令 ssh-keygen -t rsa 生成ssh,默认是以新的格式生成,id_rsa的第一行变成了“BEGIN OPENSSH PRIVATE KEY” 而不在是“BEGIN RSA PRIVATE KEY”,此时用来msyql、MongoDB,配置ssh登陆的话,可能会报 “Resource temporarily unavailable. Authentication by key (/Users/youname/.ssh/id_rsa) failed (Error -16). (Error #35)” 提示资源不可用,这就是id_rsa 格式不对造成的

解决方法(一)

使用 ssh-keygen -m PEM -t rsa -b 4096 来生成

-m 参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式

-b:指定密钥长度;

-e:读取openssh的私钥或者公钥文件;

-C:添加注释;

-f:指定用来保存密钥的文件名;

-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;

-l:显示公钥文件的指纹数据;

-N:提供一个新密语;

-P:提供(旧)密语;

-q:静默模式;

-t:指定要创建的密钥类型

解决方法(二)

将密钥转换为PuTTy ppk格式并返回来解决

tempkey的内容:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAA...
-----END OPENSSH PRIVATE KEY-----

转换为ppk格式: puttygen tempkey -o tempkey.ppk

转换回openssh格式: puttygen tempkey.ppk -O private-openssh -o tempkey.oldformat

tempkey.oldformat的内容:

-----BEGIN RSA PRIVATE KEY-----
MIIJJwIBAAKCAgEAzmmS5aA0....
-----END RSA PRIVATE KEY-----

组操作

# 强行设置某个用户所在组
usermod -g 用户组 用户名
# 把某个用户改为 group(s)
usermod -G 用户组 用户名
# 把用户添加进入某个组(s)
usermod -a -G 用户组 用户名

# 将用户从组中删除
gpasswd -d 用户名 用户组

Crontab

crontab [-u username] [-l|-e|-r]
# -u 只有 root 才能进行这个任务
# -l 查看工作内容
crontab -l 
# -e 编辑工作内容
crontab -e
# -r 删除所有的工作内容
crontab -r

# 启动服务
systemctl start crond.service
# 关闭服务
systemctl stop crond.service
# 重启服务
systemctl restart crond.service
# 重新载入配置
systemctl reload crond.service
# 查看状态
systemctl status crond.service

# 查看日志
tail -1000f /var/log/cron

crontab文件放在/etc/cron.d下,然后执行systemctl restart crond.service重启crontab服务。

crontab 不执行的原因

  1. 未重启crond服务/未重载(reloadcrond配置
  2. 文件换行不是unix
  3. crontab文件末尾没有空行

系统版本

cat /etc/redhat-release
uname -a
# centos < 7
cat /etc/issue
# 内核相关
cat /proc/version

统计文件/目录

# 1、 统计当前文件夹下文件的个数
ls -l |grep "^-"|wc -l

# 2、 统计当前文件夹下目录的个数
ls -l |grep "^d"|wc -l

# 3、统计当前文件夹下文件的个数,包括子文件夹里的 
ls -lR|grep "^-"|wc -l

# 4、统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
grep "^-" 

# 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l

Jfrog 的Artifactory 命令的使用

预先设置

jfrog rt config --user= --password=<password,,可以是加密的也可以是明文> --url=https://xxx.xx.xx/artifactory --interactive=false

api与url

如果不预先设置,需要在命令后面添加--url=--apikey=

目录的下载

jfrog.exe rt dl <在artifactory中的路径> --url=“https://xxx.xxx.xx/artifactory” --threads=1 --split-count=0

目录上传

jfrog rt u <本地路径> <服务器路径> --flat=false
# 上传后,在服务器上的路径将是 <服务器路径>+<本地路径>
# 如果想上传目录层次比较少,可以先在本地进入需要上传的目录下,在执行jfrog命令

目录删除

jfrog rt del <服务器路径,不包含https://xxx.xx.xx/artifactory > --quiet=true

查看MD5

md5sum 文件名

SYSLOG

<14>Mar 20 12:28:48 TAC

systemd系统服务4

历史上,Linux 的启动一直采用init进程。

下面的命令用来启动服务。

sudo /etc/init.d/apache2 start
# 或者
service apache2 start

这种方法有两个缺点。

一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。

二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。

根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

# 查看 Systemd 的版本
systemctl --version

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的Unix 哲学

img

(上图为 Systemd 架构图)

init5

init是Linux系统操作中不可缺少的程序之一。  

所谓的init进程,它是一个由内核启动的用户级进程。  

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。

所以,init始终是第一个进程(其进程编号始终为1)。 内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

init一共分为7个级别,这7个级别的所代表的含义如下**

0:停机或者关机(千万不能将initdefault设置为0)

1:单用户模式,只root用户进行维护

2:多用户模式,不能使用NFS(Net File System)

3:完全多用户模式(标准的运行级别)

4:安全模式

5:图形化(即图形界面)

6:重启(千万不要把initdefault设置为6)

CP

参数详解

-f   :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i   :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
-r   :递归持续复制,用于目录的复制行为;

cp命令,其实是cp -i命令,也就是不管我们怎么输入 cp -rf,其实执行的是cp -i -rf , 也无怪乎总是提问是否覆盖了。

覆盖与不覆盖

其实还有一种更简单的方法可以解决这个问题,就是在cp前加一个反斜杠,如:

\cp name.text /usr/home/

rsync删除文件

针对上面的问题,我们可以通过以下方法清空该目录:

先创建一个空目录 mkdir /tmp/empty/ 清空目标目录

rsync --delete-before -avH --progress --stats /tmp/empty/ /var/spool/postfix/maildrop

rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/

选项说明:

-delete-before 接收者在传输之前进行删除操作 –progress 在传输时显示传输过程 -a 归档模式,表示以递归方式传输文件,并保持所有文件属性 -H 保持硬连接的文件 -v 详细输出模式 –stats 给出某些文件的传输状态

不过在使用上面的命令进行清理时,存在一个问题,清空后,目标目录的权限会和源目录的权限一样。如:/tmp/empty是root:root,而maildrop之前是postfix:postdrop ,执行之后也会maildrop目录的权限也会变成root:root 。由于-a权限是-rlptogD几个参数的集合,所以可以将og(owner:group)两个参数去掉。清空时自动保持之前的目录权限,如下:

rsync --delete -rlptD /tmp/empty/ /var/spool/postfix/maildrop/

rsync与rm 删除速度比较

为什么rsync这么快呢? rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销

开机启动

查看

systemctl get-default

命令界面

systemctl set-default multi-user.target

图形界面

systemctl set-default graphical.target

Curl

curl -i -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

-i: 显示头信息

被 < > 标记的部件:

VERB

适当的HTTP 方法 或 谓词 : GET、 POST、 PUT、 HEAD 或者DELETE

PROTOCOL

http或者 https

HOST

主机名,或者用 localhost 代表本地机器上的节点。

PORT

端口号

PATH

API 的终端路径

QUERY_STRING

任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读)

BODY

一个 JSON 格式的请求体 (如果请求需要的话)

https报错

curl -k --tlsv1 https://xxx

Locale区域语言设置

区域语言

Language $LANG value Englist(US) en_US.utf8 Assamese as_IN.utf8 Bengali bn_IN.utf8 Chinese(Simplified) zh_CN.utf8 chinese(Traditional) zh_TW.utf8 French fr_FR.utf8 German de_DE.utf8 Gujarati gu_IN.utf8 Hindi hi_IN.utf8 Italian it_IT.utf8 Japanese ja_JP.utf8 Kannada kn_IN.utf8 Korean ko_KR.utf8 Malayalam ml_IN.utf8 Marathi mr_IN.utf8 Odia or_IN.utf8 Portuguese(Brazilian) pt_BR.utf8 Punjabi pa_IN.utf8 Russian ru_RU.utf8 Spanish es_ES.utf8 Tamil ta_IN.utf8

Telugu te_IN.utf8

# 系统默认的语言设置
locale

# 查看当前
localectl status

# 设置区域语言
localectl set-locale LANG=zh_CN.utf8

# 编辑/root/.bashrc
# 增加
export LC_ALL="en_US.UTF-8"

linux设置库文件加载包含路径

第一种方式 vim /etc/ld.so.conf

将要包含的路径添加到此文件中 退出重新登录使配置生效或者执行命令 source /etc/ld.so.conf 另一种方式 利用LIBRARY_PATH和LD_LIBRARY_PATH环境变量,两者的区别在于:

LIBRARY_PATH用于在程序编译期间查找共享库的路径,例如指定gcc/g++编译期间需要用到的动态链接库的目录,设置方法示例: 在用户目录的.bash_profile文件中设置和导出环境变量 export LIBRARY_PATH=MY_LIBRARY_PATH1:MY_LIBRARYPATH2:$LIBRARY_PATH

LD_LIBRARY_PATH环境变量用于在程序运行期间查找动态链接库,指定动态链接库的加载路径,设置示例: 在用户根目录下的.bash_profile文件中设置和导出环境变量 export LD_LIBRARY_PATH=MY_LIBRARY_PATH1:MY_LIBRARYPATH2:$LD_LIBRARY_PATH

导出后,为了使配置生效,需要重新加载.bash_profie文件 执行如下命令: source .bash_profile

增加SWAP空间

#!/bin/bash

BASE_DIR=$(readlink -f $(dirname $0))

dd if=/dev/zero of=/tmp/swap bs=1M count=4096
ll -h /tmp/swap
df -h
# 使用格式化为swap的文件格式
mkswap /tmp/swap
free -h
# 启用swap
swapon /tmp/swap
# 查看内存
free -h
swapon -s
echo "add 4G swap finished."

重启

# 普通重启
reboot

# 强制重启
reboot -nf

RSyslog6

 日志级别

debug       –有调式信息的,日志信息最多
info        –一般信息的日志,最常用
notice      –最具有重要性的普通条件的信息
warning     –警告级别
err         –错误级别,阻止某个功能或者模块不能正常工作的信息
crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert       –需要立刻修改的信息
emerg       –内核崩溃等严重信息
none        –什么都不记录
从上到下,级别从低到高,记录的信息越来越少

修改日志级别

修改配置文件,日志级别修改为error。

vim /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.error;mail.none;authpriv.none;cron.none                /var/log/messages

重启rsyslog服务

service rsyslog status

service rsyslog restart

service rsyslog status

vim /ssl/confd/templates/rsyslog.conf.tmpl

1. centos7下修改分区大小(LVM)
2. 鸟哥的Linux私房菜·基础学习篇(第三版),P428-433
3. Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
4. Systemd 入门教程:命令篇
5. linux 下的init 0,1,2,3,4,5,6知识介绍
6. Rsyslog配置文件详解 - zengkefu - 博客园 (cnblogs.com)
Copyright © dalongm.top 2020 - 2021 all right reserved,powered by Gitbook修改时间: 2021-11-02 20:22:20

results matching ""

    No results matching ""