Linux
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
通过如下方式查找
更新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
回车
下载所有
上传 put nginx.conf /etc/nginx/nginx_test.conf
上传所有
如要把本地当前目录下所有 conf
文件上传到服务器 /etc/nginx/nginx.conf
下
断开连接
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空间。
确定硬盘的最佳块大小
创建 8G 的文件,读写速度大小,其实区别不大,无所谓了
设置交换分区文件
mkswap /mnt/swap
立即启用交换分区文件
如果在 /etc/rc.local
中有 swapoff -a
需要修改为 swapon -a
swapon /mnt/swap
设置开机自启用 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
- -a | - -append ##把用户追加到某些组中,仅与-G选项一起使用
- -c | - -comment ##修改/etc/passwd文件第五段comment
- -d | - -home ##修改用户的家目录通常和-m选项一起使用
- -e | - -expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
- -f | - -inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
- -g | - -gid ##修改用户的gid,改组一定存在
- -G | - -groups ##把用户追加到某些组中,仅与-a选项一起使用
- -l | - -login ##修改用户的登录名称
- -L | - -lock ##锁定用户的密码
- -m | - -move-home ##修改用户的家目录通常和-d选项一起使用
- -s | - -shell ##修改用户的shell
- -u | - -uid ##修改用户的uid,该uid必须唯一
- -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
-
修改组名
users
为user
:groupmod -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
方法二:把所有文件改成664,把所有文件夹改成775
递归创建文件夹
mkdir -p test/a/b/c
复制文件或目录
参数 | 说明 |
---|---|
-a | 相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用) |
-d | 若来源档为连结档的属性(link file),则复制连结档属性而非文件本身; |
-f | 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次; |
-i | 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用) |
-l | 进行硬式连结(hard link)的连结档创建,而非复制文件本身; |
-p | 连同文件的属性一起复制过去,而非使用默认属性(备份常用); |
-r | 递归持续复制,用於目录的复制行为;(常用) |
-s | 复制成为符号连结档 (symbolic link),亦即『捷径』文件; |
-u | 若 destination 比 source 旧才升级 destination ! |
移动文件或目录
参数 | 说明 |
---|---|
-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 --list
、systemctl is-enabled nginx
设置开机启动
chkconfig iptables on|off
、systemctl 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
日志查看相关
查看操作系统和版本
查找目录下的所有文件中包含某个字符串
您可以使用grep命令来在目录下的所有文件中查找包含特定字符串的文本。以下是使用grep命令的示例:
其中,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 |