Centos的使用札记

Centos使用

1. Shell基础

1.1 Shell类型
  • bash (Bourne-Again Shell, linux默认shell,sh的增强版 包括centos ubuntu,sh软链到bash, GNU组织研发) http://www.gnu.org/software/bash/manual/html_node/index.html
  • ash (Almquist shell,Kenneth Almquist与1980年代,除OpenWrt等嵌入式linux使用外,几乎被bash取代,但近来由docker alpine系统使用,也新增的应用场景) https://www.in-ulm.de/~mascheck/various/ash/
  • csh (C Shell,加州大学伯克利分校研发)
  • sh (历史:Bourne Shell, unix默认shell, bell实验室研发)
# 查看所有的shell
cat /etc/shells
# 查看当前使用的shell
echo $SHELL
1.2 命令符
  • 管道符(pipe character) | 第一个命令的输出作为第二个命令的输入

https://en.wikipedia.org/wiki/Pipeline_(Unix)

  • 重定向符(通过修改进程打开文件列表中对应描述符对应的实际文件来实现,可在/proc//fd中看到实际的重定向情况)
# [文件描述符]>[文件名|&文件描述符]   >表示清空原有文件的数据 >>表示追加到原有内容的后面 输入文件默认为标准输出(STDOUT 1)
命令 > 文件:将标准输出重定向到一个文件中(清空原有文件的数据) 
命令 2> 文件:将错误输出重定向到一个文件中(清空原有文件的数据) 
命令 >> 文件:将标准输出重定向到一个文件中(追加到原有内容的后面) 
命令 2>> 文件:将错误准输出重定向到一个文件中(追加到原有内容的后面) 
命令 >> 文件 2>&1 或 命令 &> 文件:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
# 双重重定向 tee
将输出重定向到标准输出的同时也重定向到文件

http://blog.csdn.net/Wee_Mita/article/details/52728285

2. 环境

PATH 系统用于寻找二进制可执行文件的路径 (/etc/profile.d/配置 profile文件会因系统升级而被还原)
LD_LIBRARY_PATH (/etc/ld.so.conf.d/配置 防止全局污染)

行内有效的环境变量
SQLITE3_BINARY_SITE=http://npm.taobao.org/mirrors/sqlite3 npm install sqlite3

系统配置参数

系统配置参数位于 /etc/sysctl.conf文件,通常不建议修改此文件,因此文件会在系统升级后被还原

建议用户配置放置于/etc/sysctl.d/文件夹内

## 临时配置 
sysctl -w net.ipv4.tcp_keepalive_time = 900
## 永久配置
配置写入/etc/sysctl.d/文件夹
sysctl -p /etc/sysctl.d/xxx.conf
注意,sysctl -p 不加参数只会应用/etc/sysctl.conf文件内的配置,而不会应用/etc/sysctl.d/内的配置,/etc/sysctl.d/的配置只会在启动时检查,重启生效

2. 文件管理


  • 查看文件夹大小
du -sh
  • 系统间文件复制
#建议 处于安全考虑,应使用rsync账户进行备份,因ssh权限过大 -r表示递归 -l表示保持软链  --progress可用于命令行输入时显示进度和速度
yum -y install rsync
## -l 保留软链 -t保留修改时间 -p保留权限 -g 保留group -o 保留onwer -v显示传输细节 文件名 -P显示每个文件的传输进度
## --exclude 'sources' 排除文件夹
rsync -rltpgov [] [目标]
rsync -rl lighttpd-mirrors root@10.0.30.141:/data/docker/data/volume/ (复制可能出现权限丢失)
rsync -rl -e 'ssh -p 46358' /data/* root@10.176.101.7:/data/ #修改端口发送
#软链会丢失,复制原始文件
scp -r /data/docker-volume/mariadb-1 root@10.0.10.75:/data/docker-volume/ (速度可达到80-100M/s)

  • 文件下载
## 最常见的下载
curl -o gradle-5.2.1-bin.zip https://mirrors.d.com/gradle/gradle-5.2.1-bin.zip
## 如果链接地址包含 302跳转
curl -L -o gradle-5.2.1-bin.zip https://mirrors.d.com/gradle/gradle-5.2.1-bin.zip
## 如果链接地址为采用受信任的账户签发
curl -k -o gradle-5.2.1-bin.zip https://mirrors.d.com/gradle/gradle-5.2.1-bin.zip
## 如果目标地址要求http basic auth
curl --user username:password -o gradle-5.2.1-bin.zip https://mirrors.d.com/gradle/gradle-5.2.1-bin.zip
## 如果目标地址cert身份验证 

3. 进程间通信(IPC)

  • 域套接字(AF_UNIX)
    UNIX域套接字 (Unix Domain Socket,UDS) 通常为.sock扩展名,使用文件系统API(但只用inode来标识,无实际硬盘读写)来代替网络进行进程间通信的方式
    限制:
    1. 仅限同一主机内的进程间通信
    2. 速度比共享内存方式要慢
    3. 无法采用tcpdump方式进行监听调试(因无实际数据包经过物理或虚拟网卡)

优势:
1.无需网络协议栈,无需打包拆包,校验和应答,性能好,快,传统同主机性能为internet socket的两倍
2.可利用文件权限做权限控制

http://www.bubuko.com/infodetail-1286548.html
http://www.cnxct.com/default-configuration-and-performance-of-nginx-phpfpm-and-tcp-socket-or-unix-domain-socket/
https://blog.csdn.net/timebomb/article/details/38417547
https://stackoverflow.com/questions/36118693/does-unix-domain-socket-perform-any-file-system-read-write/36118927#36118927

  • 管道和命名管道
    参见命令提示符
  • 消息队列
  • 共享内存(SHM)
  • internet socket
  • 文件
  • 同步机制
  • 内存映射文件

磁盘调整

lvm管理

umount /home #卸载逻辑卷
/etc/fstab #删除挂载信息 否则重启会自动挂载
lvremove /dev/centos/home #使用lvpath删除逻辑卷 lvdispay查看
lvextend -L +40G /dev/centos/root #增加40G (非xfs文件系统)
lvresize -L +100G /dev/centos/root #增加100G (非xfs文件系统)
resize2fs /dev/mapper/centos-root(非xfs文件系统)
xfs_growfs /dev/mapper/centos-root (xfs文件系统)

分区格式化
mkfs.xfs -f /dev/sdb1
分区挂载到目录
mount /dev/sdb1 /data/nfs

网络管理

  • 查看端口对应程序
    netstat -nlp | grep 179

计划任务

yum install crontabs
vi /etc/pam.d/crond required改为sufficient

https://my.oschina.net/thmz/blog/468327

/etc/crontab # 系统任务调度的配置文件(不建议使用)
/var/spool/cron/username # 用户任务调度的配置文件 应使用crontab -e编辑 不建议直接修改
/etc/crontab 格式

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

crontab -e -u user 格式(无user)

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed

常用调试手段,输出echo cron中的环境变量 $PATH >> /data/path.log

  • 计划任务手动开启
/usr/sbin/crond

防火墙管理

iptables

查看规则 -t表名 -n数字形式显示ip和端口 -v显示详细信息(例如接口名) --line-numbers 显示rule-num
iptables -t nat --list -nv --line-numbers
  1. -j target-chain 调用目标自定义规则链(返回时返回被调用规则)
  1. user-defined chain (用户自定义链)
    -j chainname 进入用户自定义链处理
  2. iptables-extensions defined target(iptables拓展目标)
    -m matching-module-name -j target-name
  3. special values(最常用-特殊目标)
    -j values
    【values】
    ACCEPT 允许(允许通过),并进入下一链继续处理
    DROP 禁止(禁止通过),直接丢弃数据包
    RETURN 返回(忽略本链),忽略本链的处理,并返回上一级链的下一条规则处理
  1. -g target-chain 跳转到目标自定义规则链(返回时返回前一个由-j调用的规则,而不一定是前一个规则)

日志查看

## 以utc时间查看系统服务日志
journalctl --utc
## 查看引导进程日志
journalctl -b
## 查看某段时间范围内的日志
journalctl --since "2015-01-10" --until "2015-01-11 03:00" --utc
journalctl --since yesterday --utc
## 按时间倒序查看
journalctl -r
## 查看某个服务的日志
journalctl -u nginx.service
## 看日志级别查看
journalctl -p err

开机自启

/etc/rc.local
系统服务

环境变量

日志定位

用户管理

  1. 区分应用权限时的用户
    尽量最小权限,如果一定要允许本地登录,则给shell和home,设置密码为空,并禁止空密码用户的远程登录

强制重启

echo 1 > /proc/sys/kernel/sysrq  
echo b > /proc/sysrq-trigger 

桌面安装

vnc VS xrdp (推荐使用xrdp)

https://www.linuxidc.com/Linux/2017-09/147112.htm

Ubuntu系统
apt-get install x-window-system-core(图形基础)
apt-get install gdm(登录管理器)
apt-get install ubuntu-desktop
apt-get install unity (需先安装ubuntu-desktop)

xrdp (RDP,remote desktop protocol服务包,转换为vnc协议)
 console  

Linux桌面环境
 |-X Display Manager(XDM)
   |-gdm https://wiki.gnome.org/Projects/GDM
   |-kdm https://www.kde.org/
   |-xdm https://wiki.archlinux.org/index.php/XDM
   |-lightdm (Light Display Manager)
 |-X Server (Linux X Window System) 窗口管理器 版本11 通常称为X11 使用startx脚本启动
   |-xorg 依赖(xserver-xorg) (不具备远程访问的能力)
   
     |-x-window-system-core(现在一般不需要了)
     |-ubuntu-desktop(桌面环境)
       |-unity(ubuntu17后默认不装,Canonical开发,已经放弃开发)
     |-Kubunut-desktop(桌面环境, kdm)
     |-gnome-core 
       |-gnome2
       |-gnome3 (桌面环境)
       |-gnome-session (会话管理)
     |-Xfce      
       |-Xubuntu-desktop(桌面环境) https://xubuntu.org/
   |-X11rdp 
 
 
xserver-common
|-xserver-xorg-core
  |-xserver-xorg
    |-xorg         (XOrg Foundation Open Source Public Implementatio 是一个X Server的实现)

MATE  
Cinnamon  

vnc4server (vnc的服务端,RFB协议)
tightvncserver
x11vnc

sudo apt-get install xubuntu-desktop

xrdp

软件管理

## Radhat 对应的软件包 RPM(Redhat Package Manager)  YUM(Yellow dog Updater, Modified, 最早用于yellow dog linux操作系统)
[root@lineto ~]# rpm -qf /usr/bin/vmstat
procps-ng-3.3.10-10.el7.x86_64
## 查找包含某个命令的yum包
[root@docker140 ~]# yum provides */nslookup
1:bash-completion-extras-2.1-11.el7.noarch : Additional programmable completions
                                           : for Bash
Repo        : epel
Matched from:
Filename    : /usr/share/bash-completion/completions/nslookup

32:bind-utils-9.9.4-61.el7.x86_64 : Utilities for querying DNS name servers
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup


## Ubuntu APT (Advanced Packaging Tool)  dpkg(Debain Package) 
dpkg -l | grep name
apt list --installed

## Alpine APK (Alpine Linux Package Keeper, called, a-packs)

## OpenWrt opkg (Open PacKaGe management) fork与 ipkg(Itsy PacKaGe management system)项目 因此其软件包扩展名为ipk,效仿与ubuntu dpkg

## DNF (Fedora)

## Tiny DNF, (Tiny Dandified Yum) Vmware PhotonOS

## Moc OS (brew)

网络代理

利用SSH加速国外访问(SOCKS5代理)

ssh -f -C2qTnN -D 127.0.0.1:1080 root@国外服务器IP -p Port

使用privoxy对SOCKS代理进行HTTP代理转换, 并利用全局变量设置代理

https://blog.csdn.net/brenda2314/article/details/88320012

利用Proxychains实现对linux软件的代理访问(部分软件不支持)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值