Linux

Vim编辑器

Vim 编辑器

vim键盘图

  • 思维导图:如果看不清,请在新窗口打开或者下载

yum相关

yum操作

  • 显示已经安装的软件包 yum list installed | grep php
  • 查找可以安装的软件包 yum list xxxxx
  • 安装相应的软件包 yum install xxxx
  • 一路绿灯安装 yum install -y xxxx
  • 卸载相应的软件包 yum remove xxxx 批量卸载 yum remove pph-*
  • 列出软件包依赖 yum deplist xxxx
  • 显示软件包的描述信息和概要信息 yum info xxxx
  • 升级所有软件包 yum update
  • 升级某个软件包 yum update xxxx
  • 检查可更新软件包 yum check-update

yum被干掉了怎么办

参考如下文档:本人还没经过试验,所以只扔链接 参考链接一:请点击

参考链接二:请点击

yum安装软件的目录

配置文件一般情况下在 /etc/ 目录下 /etc/xxx.conf 通过如下方式查找

# 先找出详细的软件包名称
rpm -qa|grep redis
# 然后找出相应的文件和目录
rpm -ql redis-3.2.10-2.el7.x86_64

### 扩展知识
rpm -qi 包名	查看一个包的详细信息
rpm -qf 文件名	查看一个文件是由哪个包安装的
rpm -ql 包名	查看一个包安装了哪些文件
rpm -qa	查看系统中安装了哪些包

更新yum源

默认的yum源上的软件太旧了,都是古董,想要安装新版的,要不自己编译安装,要不就是去更新yum源,编译安装先略过,以后有专题搞这个

  • 阿里的yum源:http://mirrors.aliyun.com/repo/
  • 网易yum源:http://mirrors.163.com/.help/

FTP

服务器对服务器使用 FTP

说在前面:

  • 下载的时候是下载在你当前敲命令的目录
  • 上传的时候,只会上传你当前目录下的文件

连接:sftp 47.93.220.120,输入密码 指定用户,不指定就默认是当前登录的用户 sftp root@47.93.220.120

下载 get /etc/nginx/nginx.conf 回车

下载所有

cd /etc/nginx/conf.d/
mget *.*

上传 put nginx.conf /etc/nginx/nginx_test.conf

上传所有

如要把本地当前目录下所有 conf 文件上传到服务器 /etc/nginx/nginx.conf

cd /etc/nginx/
mput *.conf

断开连接

bye 回车

SWAP内存交换空间

先查看是否有 swap 空间

fee -m 如下所示,如果 Swap 为0,表示没有创建过,可以创建

total used free shared buff/cache available
Mem: 1014696 171932 70864 428 771900 695732
Swap: 0 0 0 0 0 0

设置交换分区文件大小

Linux中的交换分区的大小分配推荐法则

  • 内存小于4GB时,推荐不少于2GB的swap空间;
  • 内存4GB~16GB,推荐不少于4GB的swap空间;
  • 内存16GB~64GB,推荐不少于8GB的swap空间;
  • 内存64GB~256GB,推荐不少于16GB的swap空间。

确定硬盘的最佳块大小

# 测试一个 G 的文件大小写入
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

# 通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小,其实差别不是太大。

创建 8G 的文件,读写速度大小,其实区别不大,无所谓了

设置交换分区文件

mkswap /mnt/swap

立即启用交换分区文件

如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a

swapon /mnt/swap

设置开机自启用 swap 分区

vim /etc/fstab

# 在最下面加入一行
/mnt/swap swap swap defaults 0 0

# 保存退出即可,/mnt/swap 路径为你上面创建的 of=/mnt/swap

查看是否成功 fee -m

查看和控制进程

查看进程

ps 命令

参数 说明
a 显示当前终端下的所有进程信息,包括其他用户的进程
u 以用户为主的进程状态
x 通常与 a 这个参数一起使用,显示当前用户在所有终端下的进程信息
-e 显示系统内所有的进程信息
-l 使用长格式显示进程信息
-f 使用完整的格式显示进程信息
  • 执行 ps aux 命令,如下所示:

  • 字段含义说明

字段含义说明

  • 执行 ps -elf 命令,将以长格式显示系统的进程信息,并包含更丰富的内容。

  • 字段含义说明

top 命令

  • top 类似于 Windows 的任务管理器,按 q 退出

  • 字段含义说明

pgrep 命令

使用pgrep命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多中属性查询特定进程的PID号。 例如查看用户fan正在运行的所有进程。

pstree命令 pstree 命令可以输出 Linux 系统中各个进程的树形结构,更加直观地判断出各进程之间的关系。

控制进程

有些命令会在前台执行,占据整个窗口,窗口关闭该进程就会停止,如果需要在后台执行,在命令最后加一个 & 符号即可,符号前有个空格

  • 改变进程的运行方式

Ctrl+z:挂起当前进程 jobs -l:查看后台进程 fg:恢复进程 kill -9:结束进程

常用命令

解压缩

关机

关机属于重大操作

  • 查看目前有谁在线 who

  • 查看网络的联机状态 netstat -a

  • 查看执行的程序 ps -aux

  • 将数据同步写入硬盘 sync

  • init 0 也可以实现立即关机

用户和用户组

用户、用户组相关

用户操作

创建用户

useradd shuxiaoyuan 创建用户 shuxiaoyuan

useradd -e 12/30/2016 user2 创建 user2 指定有效期 2016/12/30 到期

useradd -u 600 user3 指定 user3 的UID为600,用户缺省UID的从500向后顺序增加,500以下作为系统保留账号

useradd -g user users 创建用户 user 并指定用户组 users

修改密码

passwd user1 指定用户密码,注:没有设置密码的用户不能使用

修改用户账户

usermod -l u1 user1 - - 将用户 user1 的登录名改成 u1

usermod -g users user1 - - 将用户 user1 加入到 users 组中

usermod -d /users/us1 user1 将用户 user1 目录改为 /users/us1

usermod -u <uid> 用户ID 修改用户ID

usermod 修改用户帐户信息

  • usermod [options] user_name
  1. -a | - -append ##把用户追加到某些组中,仅与-G选项一起使用
  2. -c | - -comment ##修改/etc/passwd文件第五段comment
  3. -d | - -home ##修改用户的家目录通常和-m选项一起使用
  4. -e | - -expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
  5. -f | - -inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
  6. -g | - -gid ##修改用户的gid,改组一定存在
  7. -G | - -groups ##把用户追加到某些组中,仅与-a选项一起使用
  8. -l | - -login ##修改用户的登录名称
  9. -L | - -lock ##锁定用户的密码
  10. -m | - -move-home ##修改用户的家目录通常和-d选项一起使用
  11. -s | - -shell ##修改用户的shell
  12. -u | - -uid ##修改用户的uid,该uid必须唯一
  13. -U | - -unlock ##解锁用户的密码

删除用户账户

userdel user2 删除用户 user2

userdel -r user3 删除用户 user3,同时删除他的工作目录

查看用户信息

id user4 id 命令,查看一个用户的UID和GID,例为查看user4的id finger user4 finger 命令,可以查看用户的主目录、启动shell、用户名、地址、电话等信息

用户组

用户组操作

  • 创建用户组 users 其GID为888: groupadd -g 888 users

  • 修改组名 usersusergroupmod -n user users

  • 删除用户组:groupdel users

用户组添加、移除用户

  • user1 加入 users 组: gpasswd -a user1 users

  • user1 退出 users 组: gpasswd -d user1 users

注:只有root和组管理员能够改变组的成员

查看用户组下所有用户

groups 查看当前登录用户的组内成员

groups nginx 查看 nginx 用户所在的组,以及组内成员

whoami 查看当前登录用户名

/etc/group 文件包含所有组

/etc/shadow/etc/passwd 文件记录系统存在的所有用户名

文件和文件夹

修改文件夹和文件权限

将目录下所有的文件权限改为644,文件夹权限修改为755

方法一:先把所有文件及文件夹改成664,然后把所有文件夹改成775

chmod -R 664 password
find password -type d|xargs chmod 775

方法二:把所有文件改成664,把所有文件夹改成775

find password -type  f|xargs chmod 664
find password -type d|xargs chmod 775

递归创建文件夹

mkdir -p test/a/b/c

复制文件或目录

cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory
参数 说明
-a 相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d 若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l 进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r 递归持续复制,用於目录的复制行为;(常用)
-s 复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u 若 destination 比 source 旧才升级 destination !

移动文件或目录

mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
参数 说明
-f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u 若目标文件已经存在,且 source 比较新,才会升级 (update)

删除文件或目录

rm [-fir] 文件或目录

参数 说明
-f 就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i 互动模式,在删除前会询问使用者是否动作
-r 递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

文件搜索 find

查看文件内容

cat

由第一行开始显示文件内容

cat [-AbEnTv]

参数 说明
-A 相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b 列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E 将结尾的断行字节 $ 显示出来;
-n 列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T 将 [tab] 按键以 ^I 显示出来;
-v 列出一些看不出来的特殊字符

tac

从最后一行开始显示文件内容,就是 cat 的 倒写

nl

显示行号

nl [-bnw] 文件

参数 说明
-b 指定行号指定的方式,主要有两种
-b a 表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t 如果有空行,空的那一行不要列出行号(默认值);
-n 列出行号表示的方法,主要有三种
-n ln 行号在荧幕的最左方显示;
-n rn 行号在自己栏位的最右方显示,且不加 0 ;
-n rz 行号在自己栏位的最右方显示,且加 0 ;
-w 行号栏位的占用的

more

一页一页翻动

参数 说明
空白键 向下翻一页
Enter 向下翻『一行』
/字符串 向下搜索 字符串 关键字
q 退出
b 往回翻

less

一页一页翻动

参数 说明
空白键 向下翻动一页;
[pagedown] 向下翻动一页;
[pageup] 向上翻动一页;
/字串 向下搜寻『字串』的功能;
?字串 向上搜寻『字串』的功能;
n 重复前一个搜寻 (与 / 或 ? 有关!)
N 反向的重复前一个搜寻 (与 / 或 ? 有关!)
q 离开 less 这个程序;

head

取出文件前面几行

head [-n number] 文件

参数 说明
-n 后面紧跟数字,代表显示几行

head -n 20 xxx.log

tail

取出文件后面几行

tail [-n number] 文件

参数 说明
-n 后面紧跟数字,代表显示几行
-f 表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

tail -n 20 -f xxx.log

解压缩类

解压缩类

tar

tar -zxvf xxx.tar

bz2

zip

解压:

参数列表

必要参数有如下: -A 新增压缩文件到已存在的压缩 -c 建立新的压缩文件 -d 记录文件的差别 -r 添加文件到已经压缩的文件 -u 添加改变了和现有的文件到已经存在的压缩文件 -x 从压缩的文件中提取文件 -t 显示压缩文件的内容 -z 支持gzip解压文件 -j 支持bzip2解压文件 -Z 支持compress解压文件 -v 显示操作过程 -l 文件系统边界设置 -k 保留原有文件不覆盖 -m 保留文件不被覆盖 -W 确认压缩文件的正确性

临时

开关机

将数据同步写入硬盘的中的指令:sync

关机前执行 sync 命令是一个很好的习惯

reboot:现在重新启动计算机

logout:用户注销

开机启动 chkconfig | systemctl

判断是否开机启动

chkconfig iptables --listsystemctl is-enabled nginx

设置开机启动

chkconfig iptables on|offsystemctl enable|disable redis

进程管理 ps --help all

ps -ef | grep redis

kill -9 pid

常用的一些参数:

参数 说明
-A, -e all processes

端口管理 netstat --help

常用参数

参数 说明
-a 表示列举所有的连接、服务器监听
-t 列出所有tcp协议的服务
-u 列出所有udp协议的服务
-n 使用端口号来显示
-l 列出所有的监听
-p 列出所有服务的进程id(pid)

一般常用: netstat -atunlp

日志查看相关

动态查看日志

 tail -f 文件名

查看操作系统和版本

cat/proc/version

查找目录下的所有文件中包含某个字符串

您可以使用grep命令来在目录下的所有文件中查找包含特定字符串的文本。以下是使用grep命令的示例:

grep -rl "search_string" /path/to/directory

其中,search_string是您要搜索的字符串,/path/to/directory是您要搜索的目录的路径。

该命令将递归搜索指定目录及其子目录中的所有文件,并输出包含该字符串的文件的路径。 -r选项表示递归搜索子目录,-l选项表示只输出包含字符串的文件名,而不是包含字符串的行号。

如果您只想在某个特定的文件类型中搜索,例如.txt文件,您可以将/path/to/directory替换为.txt文件的路径。

变量

  • 设置变量 name=shuxiaoyuan 可以设置变量直接进入代码目录,还可以将变量设置在 bash 的配置文件中 ~/.bashrc

  • 查看变量 echo ${name} uname -r

  • 销毁变量 unset name

  • 列出环境变量 env

  • 观察所有变量 set

  • 使用 ulimit 来限制用户的某些系统资源等,如:开启文件数量,可使用的 CPU 时间,可使用的内存总量等等

116服务器debug

根据端口查询具体的进程: sudo lsof -i :8080

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vc_travel 830 root 25u IPv4 21465 0t0 TCP localhost:webcache (LISTEN)

ps -f -p 830

UID PID PPID C STIME TTY TIME CMD
root 830 1 0 Jul21 ? 00:00:13 /alidata/vctraveler/vc_traveler_main