常用命令
touch filename.suffix ---创建文件
more filename ---看文件,一次一屏
less ---看文件 /查找 n向下查找 N向上查找
tali -5 filename ---直接显示后5行
head -3 filename ---直接显示前3行
find / -name filename ---按文件名查找,从根目录开始
-user user ---按用户查找
-size size ---按大小查找
(例子:find / -name filename -exec cat {} \; 查找到文件后执行输出内容命令)
which/whereis file ---一般用来查命令
locate file ---查找普通文件,默认一天更新一次,新建立的文件,
需要先输入updatedb命令,再查找
ls >路径 --- >输出重定向
ls >>路径 --- >>追加
例子 ls 1>路径 ---1是正常输出重定向
2>/dev/null ---2是错误重定向
df ---查看已挂载的硬盘
fdisk ---查看所有硬盘,也可进行分区
mkft -t ext4 diskname ---格式化硬盘
mount 挂载的地方 要挂载的硬盘 ---挂载硬盘
(所有硬盘都会出现在/dev下,有的没有挂载)
unmount 挂载的硬盘 ---用于卸载挂载点
设置自动挂载硬盘
编辑/etc/fstab,在最后一行加上
挂载的硬盘 挂载点 类型 defaults 0 0
设置网络
vi /etc/selinux/config 文件里的selinux关闭
vi /etc/sysconfig/network-scripts/ifcfg-eth0(centos7中是ifcfg-ens33)
(要设置成动态获取IP的话) ONBOOT=yes BOOTPROTO=static (要设置成静态IP的话) NETMASK=255.255.255.0 IPADDR=X.X.X.X GATEWAY=X.X.X.X DNS1=8.8.8.8
service network restart --- 重启网卡
nmtui ---界面化设置ip地址命令
host 域名 ---查看域名主机的ip地址
nslookup 域名 ---查看域名对应的IP
netstat -a ---查看网络的一些信息
netstat -tnlp |grep 服务名 ---查看服务的信息
文件权限
-用户 用户组 其他(user group other)
-rwxrw-r--
r 读权限 4
w 写权限 2
x 执行权限 1
修改用户权限(=是直接修改权限,+是增加权限,-是去除权限)
chmod 777 ProgramName
<==>
chmod a+rwx ProgramName
<==>
chmod ugo=rwx ProgramName
隐藏权限
suid chmod 4777 文件 ---4代表suid,suid文件的所有者
sgid chmod 2755 目录 ---2代表sgid,sgid目录的所有组
sbit chmod 1777 目录 ---1代表sbit,sbit目录下的文件只能被所有者操作
给用户加root权限
在/etc/sudoers下添加用户
实例:
将所有文件夹权限改为755,文件改为644chmod -R 644 路径 find 路径 -type d -exec chmod 0755 {} \;
快捷方式(软链接)
在任何地方都可以直接使用文件全名即可使用
ln -s filepath /usr/bin/filename
打包文件
zip
zip 打包后的文件名 要打包的文件 ---打包文件
zip -r 打包后的文件名 要打包的文件 ---打包文件夹(不加-r只打包文件夹,不打包里面的内容)
unzip 要解包的zip包 ---解压zip包
bzip2/gzip
gzip、bzip2一次只能压缩一个文件
bzip2 要打包的文件 ---bzip2打包文件
bzip2 -d 以bz2为后缀的文件 ---bzip2解包
gzip 要打包的文件 ---gzip打包文件
gzip -d 以gz为后缀的文件 ---gzip解包
tar
-j bzip2
-z gzip
-f 设置文件名
-c 新建打包文件
-x 解包
-v 显示执行过程
-t 查看保重内容
tar -zcvf 打包后文件 打包源 ---打包文件
tar -zxvf 打包文件 ---解包文件
VI&VIM使用方法
:命令模式
esc键返回一般模式
i 进入编辑模式(i在当前位置插入,I在行首插入,a在下一字符插入,A在行尾插入,o在下一行插入,O在上一行插入)
w 储存
q 退出
dd 剪切
p 向下粘贴
P 向上粘贴
yy 复制
ndd 或 nyy 剪切n行或复制n行
命令模式下
:set nu ---显示行号
:sh ---可以把vim放入后台执行,推到shell中执行命令,按下exit后返回vim
:set tabstop=2 ---自动缩进
:/word ---查找字符
:n ---查找下一个
:n1,n2s/search/replace/g ---从第n1行到第n2行搜索search替换为replace,在/g后面加个c会询问,较为安全
:u ---撤销执行的操作
:r filename ---导入一个文件内容
:sp ---开启一个新窗口,切换窗口,ctrl+w,松开w后,按上下键
账号相关及密码修改
用户相关信息,查看/etc/passwd文件,1000以后是用户自己创建的用户
用户的密码,查看/etc/shadow文件下,经过加密
管理用户组,查看/etc/group文件
组密码,查看/etc/gshadow文件里
groupadd 组名 ---添加组
useradd -g 组名 用户名 ---添加新用户到固定组内
useradd -G 组名 用户名 ---添加新用户到附加组
useradd -M 用户名 ---创建用户时不创建家目录
useradd -s /sbin/nologin 用户名 ---创建一个不能登录的用户
chgrp 所属组 文件 ---更改文件所有组
chown 所有者:所有组 文件 ---更改文件所有者所有组
usermod -G 附加组 用户 ---添加用户的附加组
usermod -L 用户 ---锁定用户
usermod -u 用户 ---解锁用户
userdel 用户 ---删除用户 加上-r意思连家目录一起删除
find / -nouser -exec rm -ri {} /; ---查找没有用户所有者的目录
chage -r/I/M/m 用户 ---修改用户的权限日期
ACL
dumpe2fs -h /dev/sdb1 | grep acl ---用于查看是否支持acl,不支持的话,在defaults后面
加个,acl,一般默认就有acl
setfacl -m u:用户名:rwx 目录 ---设置用户可以在目录下使用acl
setfacl -m g:组名:rwx 目录 ---设置组可以在目录下使用acl
setfacl -m m:rwx 目录 ---设置mask权限
getfacl 目录 ---得到目录的acl
安装软件
wget 链接 下载软件
make clean 清理make配置
修改依赖库配置/etc/ld.so.conf
ldconfig 动态加载到内存
过程
- 执行./configure检测GCC编译器,依赖函数库或软件是否已经安装
- 当configure检测通过后,生成makefile文件
- make根据makefile生成可执行文件(二进制文件)
- make install 路径
文件目录
/var/lib 存放数据库软件
/etc 存放配置文件软件
/lib /usr/lib 需要的函数库
/usr/local 可执行文件(一般软件都安装在这)
rpm安装软件
rpm -ivh 软件名 ---安装软件
rpm -e 软件名 ---删除软件
rpm -qa ---查找数据库
rpm -qa |grep -i '软件名' ---查找数据库中的软件
/var/lib/rpm
yum安装软件
yum 服务器放了众多软件
yum install 软件名 ---安装软件
yum erase 软件名 ---删除软件
/var/cache/yum 下载服务器的软件信息
任务
pkill -kill -t tty名 ---踢走一个用户或进程
w ---查看现在的用户的负载
last ---查看现在所有用户登录的信息
lastlog ---查看用户的登录信息
write 用户名 tty名 ---向用户发信息(发完信息要按ctrl+d才能发送出去)
wall 发送的消息 ---广播消息
计划任务
ps -l ---查看自己的进程
ps aux ---查看所有服务进程
ps aux | grep 进程名 ---查看查询的进程
pstree ---以树状图查看当前所有进程
kill PID ---关闭进程
kill -9 PID ---直接删除进程
pkill -9 CMD(名字) ---删除进程根据名字
killall -9 -i CMD(名字) ---删除进程根据名字有确认框
at 时间 接着输计划执行命令,输完ctrl+D
at -c 任务号 ---查看计划任务
at -l ---查看所有计划任务
at -d 任务号 ---删除计划任务
/etc/at.deny 拒绝执行计划任务,里面是用户名
定时任务
crontab -e ---编辑定时任务(最短为1分钟)
crontab -l ---显示任务
crontab -r ---删除任务
vi /etc/crontab 使用crontab示例
watch 命令 ---每2秒执行一次命令
后台运行任务
让一个任务或者程序在后台执行可以使用&
jobs ---查看当前有多少在后台运行的命令
bg ---将一个在后台暂停的命令,变成继续执行
fg ---将后台中的命令调至前台继续运行
ctrl+z ---可以将一个正在前台执行的命令放到后台,并且暂停
top 性能分析工具
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
Ctrl+L 擦除并且重写屏幕。
h或者? 显示帮助画面,给出一些简短的命令总结说明。
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
系统启动流程(centos 6)
1、开源BIOS
2、启动设备(硬盘最其实位置)读取一个小程序MBR boot loader
3、linux内核 Kernel
4、init pid1
5、/etc/rc.sysinit
6、根据/etc/inittab找到启动级别
0-系统停机状态
1-单用户状态
2-多用户状态(没有NFS)
3-多用户状态(有NFS)
4-系统未使用,留给用户
5-图形界面
6-系统正常关闭并重新启动命令: init 3 或 systemctl set-default multi-user.target/graphical.target systemctl get-default
7、去相应启动级别的目录/etc/rc5.d当中启动,每一个字线为S的服务
8、执行/etc/rc.d/rc.local
9、用户登录界面chkconfig --list | grep 程序名 chkconfig --level 345 程序名 on ntsysv 界面化自动启动服务
SSH(ssh或22端口关闭,用户不能远程登录)
ssh 用户名@ip地址
ssh 用户名@ip地址 命令
scp 文件 用户名@ip地址:/路径
VNC图形远程连接
需要先安装vnc
客户端需要realvnc传递
server端需要配置/etc/sysconfig/vncservers,在里面加上VNCSERVERS="2:用户名",然后切到用户名的用户账号下,用vncpasswd 用户名 设置用户的vnc密码,开启vnc服务
SAMBA共享
先关闭防火墙
配置/etc/samba/smb.conf
创建匿名帐户就在security = usr后面添加map to guest = Bad User
在windows下输入\samba服务器地址即可,提示输入用户名和密码,随便输
设置smb用户
smbpasswd -a 用户名 ---设置smb用户密码
想要在共享文件夹下可以写入文件,需要在配置文件下添加命令
writable = yes
添加有效用户
valid users = 用户名,用户名
添加有效用户组
valid users = @组名
设置文件/文件夹权限
create mask = 0644 directory mask = 0755
防火墙
service iptables stop或 systemctl stop firewalld.service(centos7) ---关闭防火墙 -L 查看所有规则 -A 追加 -F 清除所有规则 -I 插入 -s 指定来源 -P 默认规则 -D 删除规则 --line-number 显示序号 --dport 目标端口 --sport 源端口 -p 协议 例子:iptables -A INPUT -p tcp --dport 80 -j ACCEPT ping是使用icmp协议,22是ssh服务的端口,80是http服务的端口 -i 数据包进入的网卡 -o 数据包输出的网卡
accept 接受数据进来
drop 丢弃数据包
reject 阻止数据包
定义规则
规则从上往下匹配,匹配成功就不往下匹配了
iptables -A INPUT -j DROP 屏蔽所有数据包
在文件中写规则
IPT="/sbin/iptables"
$IPT -F
$IPT -P INPUT DROP
...
service iptables restart
保存文件为iptables.sh
加上权限chmod u+x iptables.sh
运行./iptables三次握手会使用到三个包 new包、RELATED包、ESTABLISHED连接
可以设置防火墙
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
LAMP环境安装
Linux
Apache
yum -y install httpd httpd-devel
Mysql
yum -y install mysql mysql-server mysql-devel
PHP
yum -y install php php-mysql php-gd php-mbstring pho-devel
伪静态
rewrite
.代表任意
+代表一个或多个
*代表0个或多个
^代表开始
$代表结束
\转义符
FTP
文件传输协议
ftp端口 20,21
20端口 传数据
21端口 命令
主动模式与被动模式
主动模式
1、客户端随机开一个>1024端口与服务器FTP服务21端口进行连接
2、客户端监听端口(>1024与服务器端ftp服务连接的端口)
3、服务器20>客户端(>1024端口)发送数据
被动模式
1、客户端开2个端口(n>1024 n+1)
2、第一个端口与服务器端21通信
3、客户端主动通过的第二个端口向服务器端请求数据,服务器端随机开一个大于1024的端口,来相应客户端的连接
VSFTP
1、GPL协议的服务器软件
2、非常安全,基于ssh
3、非常快,单台服务器支持15000>的用户连接
安装vsftp
yum -y install vsftpd
window下需要安装客户端filezilla才能登录ftp
设置最大连接数(修改/etc/vsftpd/vsftpd.conf)
max_per_ip = 1
设置最大的下载次数
local_max_rate=20000
NTP
找一个服务器,同步硬件时间和软件时间
硬件时间与软件时间date ---显示软件时间 date -s 时间 ---设置软件时间 hwclock -r ---显示硬件时间 hwclock -s ---将硬件时间同步到软件时间 hwclock -w ---将软件时间同步到硬件时间 ntpdate server 服务器地址 ---根据服务器的时间进行软件时间同步
注:如果开启ntpd服务,就不能使用ntpdate命令了,只能二选一