经常使用linux进行开发,软件安装,环境部署等,会用到一些常用的命令,下面是我平时使用或收集到的linux下的常用命令集:
了
type command 查看一条命令是外部命令还是内部命令
[root@upl test]# type cd
cd is a shell builtin
cd 是内部命令
[root@upl test]# type mount
mount is /bin/mount
mount 是外部命令
内部命令可以直接访问环境变量,外部命令不可以
查看内部命令集合体
man type
环境变量
查看环境变量
echo $PATH
env 查看所有环境变量
自已设定环境变量
[root@upl test]# AA=hello
[root@upl test]# echo $AA
hello
查看环境变量要给$
环境变量配置角本 /etc/profile
查看命令或者函数在哪一章
whatis command
man -f command
man文档
1.基本的shell指令 whatis ls
2.系统调用命令 whatis open
3.系统调用库命令 whatis malloc
4.
5.文件接口 whatis passwd whatis inittab whatis shadow
7.总述 杂项 whatis signal whatis socket
8.网络接口,内核接口 whatis ifconfig whatis mii-tool
info command
help
ls list directory contents
ls file or directory
ls -l 以列表的形式 ==> ll
ls -a 所有的文件
ls -R 递归文件夹
ls -h 文件大小带有单位
ls -t 以时间顺序排列
touch 创建一个文件
1.假如文件不存在,会创建一个文件
2.如果文件存在,改变文件的时间戳,不会改变文件内容
cd change working directory 改变工作目录
cd directory
cd . 当前目录
cd .. 上一层
cd - 返回上一次跳过来之前的目录
cd 到相应用户的家目录
cd ~ 到相应用户的家目录
绝对路径 从根出发
相对路径 从当前的工作目录出发
rm remove a files or a directorys
rm -r 删除一个目录
rm -f force 强制删除
mkdir create a directory
mkdir directorys
mkdir dir1/dir2/dir3 -p 创建多级目录
cp copy a file or a directory
cp file1 file2
cp file directory
cp directory1 directory2 -r
\cp file directory 覆盖模式
mv
1.剪切
mv file1 directory
mv file1 ../file1
2.重命名
mv file1 file2
权限
7 7 7
- rwx rwx rwx
所有用户 所属组 其它
r-- 4
rw- 6
chmod 0777 file 给某文件设置权限
chmod 0777 directory -R 所有都置成一样的权限
chmod a+x file 给所有位添加x
chmod a-x file 把所有位删除x
umask 查看当前用户的掩码
默认情况下是0022
创建文件的最大权限是666
创建文件夹最大权限是777
maxpriority - umask = file or directory priority
文件夹 777 - 022 = 755
文件 666 - 022 = 644
- normal file 普通文件 黑色
d directory 目录 蓝色
c characterdevice 字符设备 黄色
b blockdevice 块设备
s socketdevice 网络设备
l link 链接文件 浅蓝色
p pipe 管道文件
/root 超级用户的家
/home 普通用户的家
/bin 普通用户的命令
/sbin 超级用户的命令
/dev 设备
/etc 配置文件的目录
/net /sys 网络相关 系统相关
/media 自动挂载外设
/mnt 手动挂载外设,网络资源
/misc 自动挂载本机硬盘资源
/proc 自动生成,设备参数
/var 系统日志和服务
/usr 第三软件自动安装目录
/opt 手动安装第三方软件
/selinux SELINUX 防火墙
/lost+found ext2 ext3 ext4 磁盘格式
/boot 内核,grub引导 一盘独立分区
vim 编辑器
三种模式
命令模式
末行模式
插入模式
插入模式
补全 ctrl + p
删除整行 ctrl + u
命令模式
命令模式转入插入模式
i 在当前光标前插入
I 在当前光标的行首插入
a 在当前光标后插入
A 在当前光标的行尾插入
o 在当前光标的下一行的开头插入
O 在当前光标的上一行的开头插入
yy 复制一行
4yy 复制从当前光标以下四行
dd 删除一行
4dd 删除从当前光标以下四行
d + 上键 删除当前光标这一行以及上一行
d + 下键 删除当前光标这一行以有下一行
p 粘贴在当前光标所在当行的下一行
P 粘贴在当前光标所在当行的上一行
r + 所替换的字符 替换掉当前光标的一个字符
可视块
删除
ctrl + v 把需要操作的字符拉黑 +delete 将拉黑的字符删除
添加
ctrl + v 把需要添加的光标拉黑 + I 编辑 + esc
替换
ctrl + v 把需要替换的拉黑+ r + 所需要替换的字符比如:a
末行模式
:! 强制 相对于超级用户
:w 保存
:q 退出
:wq 保存以及退出 :qw 不行
:x 保存以及退出
:X 对一个文件加密码 不输入密码就是取消
:!<commad> 跳出vim执行<commad>命令
:sh 创建出新的一个shell保存当前编辑状态,操作完之后,用ctrl+d恢复当前编辑状态
如何将一个程序调到后台
ctrl + z 掉到后台停止运行
. & 将一个程序调到后台执行
查看后台任务
jobs
后台任务掉到前台
fg
查找
/target 查找target对象 从当前光标向下查找
n 向下查找下一个
N 向上查找上一个
?target 向上查找target对象
取消高亮
:nohl ==> no high light
让vim显示星标
set number ==> set nu
让vim不显示行标
set nonumber ==> set nonu
修改配置文件
设置行标
vim /etc/vimrc
在空行处写
set number 或者 set nu
保存退出
修改tab长度
vim /etc/vimrc
set ts=4
保存退出
替换
% 所有行 s替换 g 一行所有 c check 检查
:%s/this/that 把所有行的首个this替换成that
:%s/this/that/g 所所有行的所有this替换成that
:14,16s/this/that/g 从第14行到16行的this替换成that
:%s/this/that/gc 检查访问模式替换
查看时间
date
date +%F 查看当前时间
date +%F --date="1 days ago"
date +%F --date="1 day ago"
date +%F --date="1 day"
date +%F --date="1 days"
设置时间
date -s 2014-07-14 设置当前时间
//date -s 2014/07/14
date -s 11:40
clock -w write同步时间
查看当前命令的历史
history
history -w 保存当前操作的历史命令
// ~/.bash_history
history -c 清除当前操作的历史记录
查看当前系统支持的语言
locale
locale -a 查看所有
locale -a | grep zh 查看支持中文件格式
//管道过滤
cat txt | grep hello 查看txt这个文件里面带有hello这个单词的行
linux系统运行级别 run level
0 关机
1 单用户模式,没有网络,没有服务,主动获得root权限
2 多用户模式,有服务,没有网络
3 多用户模式,有服务,有网络,服务器模式
4 保留
5 图形界面,x11
6 重启
配置脚本
/etc/inittab
id:5:initdefault
init 0
shutdown -r +10 10分钟后重启
shutdown -h now 现在关机
halt 也是关机
halt -p -f 强制关机,直接掉电
reboot 重启
init 6
init + runlevel
ctrl + F2-F7 进入字符界面
ctrl + F1 回复图形界面
stdin stdout stderr
标准输入 标准输出 标准出错
0 1 2
重定向
默认情况下是标准输出重定向 清空该文件
echo "hello world" > txt 如果txt不存在,将会被创建
标准出错重定向
echo "hello world" 2> txt
(ls && fjdkslf) 2> txt 只把标准出错重定向
把标准出错和标准输出都重定向
(ls && fjdksfj) &> txt
追加
echo "hello world " >> txt 不会清空该文件
错误追加
(ls && fdkfjdk) 2>> txt
(ls && fdkfdjf) &>> txt
网络配置
192.168.110.254
//网段 网络ip
IP 网络IP
网关 路由器 --》 交换机 没有外网转发功能
子网掩码 255.255.255.0 如果255固定,0可变
DNS解析 把域名转成具体的服务器IP
如何查看本地有无网卡
ping 127.0.0.1
ping得通证明有网卡,如果ping不通,证明没有网卡
查看网线有没有连接
mii-tool eth0 (网卡接口名字) eth0 eth1
[root@upl ~]# mii-tool eth1
eth1: negotiated 100baseTx-FD, link ok
//no link
关掉网络管理后台进程
service NetworkManager stop // restart start
配置主机IP
1.临时配置IP
ifconfig eth0 192.168.110.xxx
将本机配置成192.168.110.xxx
只要网络服务重启。就会失效
service network restart
2.手动配置IP
/etc/sysconfig/network-scrpts/ifcf-eth0
应该具有:
DEVICE=eth0 设备名字
BOOTPROTO=none 或者(静态) static 或者是 dhcp(动态获取IP地址)
ONBOOT=yes 开启本网卡工作*
IPADDR=192.168.110.xxx IP地址
// GATEWAY=192.168.110.1 网关
NETMASK=255.255.255.0 子网掩码
配置保存之后得重启网络
service network restart
第二次打可以用简写
!ser
查看网关
route -n
添加一个网关
route add default gw 192.168.110.1
删除一个网关
route del default gw 192.168.110.1
查看并配置DNS
nslookup
-> server
Default server: 192.168.2.1
Address: 192.168.2.1#53
-> exit 退出
设置DNS
/etc
nameserver 192.168.2.1
// 8.8.8.8
// DNS1=8.8.8.8
配置子网 虚拟网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0 修改网卡名字
改成2网段的某一个IP
GATEWAY=192.168.2.1
保存
service network restart
ping 192.168.2.1
ping 得通
DNS是否可以用
nslookup
->server
192.168.2.1 --> 8.8.8.8
-> exit
nslookup www.baidu.com
如果解析成功。将会看到解析地址
ping www.baidu.com
如果ping得通 就可以上网了
wireless
# ls u
# ls wirele
# yum -y install zd1211*
# ifconfig -a 查看wlan0
# ifconfig wlan0 up
# ./u --> 改ESSID "AndroidAP"
# wpa --> wpa_tool
配置主机名
1.查看自己主机名
1> echo $HOSTNAME //环境变量方式 容易改动
2> hostname //命令方式
3> cat /etc/sysconfig/network | grep HOSTNAME
2.设置主机名
/etc/sysconfig/network
HOSTNAME=xxxx.xxxx.com
//要重启 让主机名生效
reboot
3.将本机的IP与本机主机名建立连接
/etc/hosts
IP + 主机名 + 主机名的简称
192.168.110.xxx xxxx.xxxx.com xxxx
ping 192.168.110.xxxx
ping xxxx.xxxx.com
ping xxxx
都可以ping得通 OK
userID 用户ID
useradd xxxx
useradd -c xxxx 注释
useradd -s /bin/bash -c "hello world" xxxx
useradd -g root -G test -s /bin/bash
-c 注释
-s 指定shell
-g 指定所属组
-G 指定所属的附组
-u 指定用户ID
-d 指定用户的家目录
-m 如果不存在创建
userdel xxxx 删除一个用户
userdel -r xxxx 删除一个用户还有对应的家目录
usermod -c "hello world" -s /bin/bash -g root -G test -d /home/bbbb xxxx
给一个用户密码
passwd xxxx
**
/etc/passwd
用户ID
0 root超级用户
500+ 普通用户 有家目录,可以登录系统
> 0 && < 500 普通用户 /sbin/nologin
用户名 有密码 用户ID 所属组ID 注释 家目录 指定的shell
root: x: 0: 0: root: /root: /bin/bash
/etc/shadow
用户名 MD5加密过后的密码encrypted password
root:$6$hYIUhhNP$u8JDuxPNqr3jNBelzMut5P8FWVMimifq8Ojcywii/OV/gS3iR
date of last password change
J5LJatOWQAp7DTyHzEFB6Bs59Ft7qRKnyptZ/:16246:0:99999:7:::
man 5 shadow
磁盘分区
1.先插入需要分区的磁盘
2.解挂所以自动挂载的磁盘分区
umount /media/*
3.D格磁盘
1> 确认磁盘设备节点
fdisk -l 比如:/dev/sdb1 ==》最终用整个磁盘/dev/sdb
2> D格
dd if=/dev/zero of=/dev/sdb bs=1024 count=1
3> 确认D格有无成功
fdisk -l 如果查看不到子分区则成功
4.写分区表
1> fdisk /dev/sdb
a 设置某个分区为活动分区
n 增加一个新的分区
d 删除一个分区
p 打印分区信息
t 改变分区格式
L 打印磁盘格式与对应的ID号 最大0xff
q 退出但是不保存修改
w 写入分区表到磁盘并退出
2> 确认分区信息是否已经写入分区表
fdisk -l
如果获得的分区表信息跟你所分的信息一致。则分区表写入成功
5. 把相应的分区格式 格式式成相应的文件系统格式
1> 查看具体的分区格式
fdisk -l
2> partx -a /dev/sdb
如果查看不到对应的设备节点
ls /dev/sdb*
/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
拔出再插入 , 直到可以看到具体的分区设备节点
3> 格式化文件系统
mk /dev/sdb1
mk /dev/sdb2
mk /dev/sdb3
mk /dev/sdb4
注意,在linux系统里面,是没有ntfs格式的
6. 拔出再插入,查看自动挂载窗口有没有四个
进程管理
1.查看当前系统运行的进程
ps -auxf 长 ps -xf 短
snapshot snapshot 快照模式
USER 用户信息
PID 进程ID号
%CPU CPU占用率
%MEM 内存占用率
VSZ 虚拟内存
RSS 真实内存
TTY 是否有控制终端
START 开始时间
TIME 运行时间
COMMAND 运行此进程所执行的命令
STAT 进程状态
D 不可中断的睡眠(深度睡眠)
S 可中断的睡眠
R 正在执行的或者是准备就绪的进程
T 暂停的进程
X 死掉的进程(不可见)
Z zombie或者defunct process
< 高优先级
N 低优先级
s session leader
L 页锁
l muti-thread多线程
+ foreground前台运行的 相对于background后台
2.监控模式
top
可以按h来提供帮助
3.杀死一条进程
kill -9 processID
man 7 signal 查看第9号信号
killall
通过进程名字杀死一个或者多个进程
4.pstree
用树的方式相看进程
只能看到父子关系
服务
yum源查询
yum search vsftpd
安装
yum -y install vsftpd
删除
yum -y remove vsftpd
1.ftp服务
//-------------------------------------
//服务端
file transport proctol
文件传输协议
安装ftp服务
yum -y install vsftpd
默认开启ftp服务的路径
/var/ftp/pub
重启服务
service vsftpd restart
设置开机启动
chkconfig vsftpd on
给ftp目录权限
chmod 777 /var/ftp/* -R
保证
防火墙是关的
setup
-> firewall --> 去掉* --> 确定
关掉SElinux
setenforce 0
//----------------------------------------
//客户端
1.打开firefox -->
2.位置-->连接到服务器-->输入ftp服务器的IP-->确定
3.yum -y install lftp
lftp 192.168.110.xxx
->commad 命令
目标机 本机
-> get xxxx -o /root/xxxx
-> exit
//--------------------------------------------------
//yum 源
ls /var/ftp/pub
1.将iso里面的安装包挂出来
mount -o loop /var/ftp/pub /mnt
2.确认已经挂载
df -h
[root@www pub]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/var/ftp/pub
3.0G 3.0G 0 100% /mnt
//配置yum源的脚本
// /etc
// 名字 xxxx可以随便写,但是结尾一定要 .repo
// 最好保证里面只有一个xxxx.repo
3.vim /etc
[xxxx] //yum源的主题
baseurl=file:///mnt/
enabled=1 //开启yum源服务
gpgcheck=0 // 检查密钥
4.yum clean all // 清yum源的缓存
yum list
如果成功 之前配置的主题
//-------------------------------------
//本地非挂载
1.mount -o loop /var/ftp/pub /mnt
2.echo $? 如果是零就OK 或者 df -h 看一下是否有挂载
3.mkdir /yum
4.cp /mnt/* /yum/ -r
5.vim /etc
[xxxxx]
baseurl=file:///yum/
enabled=1
gpgcheck=0
6.yum clean all
7.yum list
//做一个yum源的服务器
//ftp
服务端
1.yum源发布出去
/var/ftp/pub
2.mkdir /var/ftp/pub/yum
3.cp /yum/* /var/ftp/pub/yum -r
4.service vsftpd restart
客户端
vim /etc
[xxxx]
1.先测试服务端的yum源路径
打开firefox
baseurl=
enabled=1
gpgcheck=0
2.yum clean all
3.yum list
安装源码包
./configure ==> 生成Makefile
make ==> 生成可执行文件
make install ==> 将可执行文件拷到系统相应目录
清包
make clean ==> 删除已经编号生成的可执行文件或者中间文件
make distclean ==> 清除包的链接关系,最主要是删除Makefile
注意:
如果包过大
make -j4
nfs 服务
怎么查看主机发布的nfs服务
showmount -e 192.168.110.xxx
1. mkdir /test 假如/test就是我们需要发布的目录
2. vim /etc/exports
/test *(rw) *所有IP r 可读 w 可写
3. service nfs restart
4. showmount -e 192.168.110.xxx
如果发现
Export list for 192.168.110.254:
/test *
发布成功
客户端连接主机nfs服务
1.showmount -e 192.168.110.xxx (主机IP)
Export list for 192.168.110.254:
/test *
2. mount -t nfs 192.168.110.xxx:/test /mnt (客户机目录)
3.df -h
192.168.110.254:/test
193G 33G 151G 18% /mnt
证明挂载成功
*注意:客户端
如果处理完事情要及时解挂
umount /mnt
如果没有及时解挂,只要服务器意外关机,客户端将死机(慢慢)
//cifs
mount -t cifs 192.168.2.211:/share /mnt
df -h
umount /mnt
ssh
ssh 192.168.110.xxx
禁止
service sshd stop
chkconfig sshd off
开启
service sshd restart
chkconfig sshd on
远程拷贝
scp
从本机拷给其它机器
scp direcotry/file 192.168.110.xx:/directory/file
passpwd:
从其它机器拷到本机
scp 192.168.110.xxx:/directory/file /directory/file
注意
这些目录不可以有一个写错
挂载U盘
mount /dev/sdb1 /mnt
ntfs格式
装ntfs包
ntfs-3g /dev/sdb1 /mnt
mount -t ntfs-3g /dev/sdb1 /mnt
打包 解包
xxx.zip xxx.bz2 xxx.gz aaa.xz
xxx. xxx. xxx.
打包
zip xxx.zip xxx
//把xxx打包成xxx.zip
gzip xxx ==> xxx.gz
bzip2 xxx ==> xxx.bz2
xz xxx ==> xxx.xz
解包
unzip xxx.zip ==> xxx
gunzip xxx.gz ==> xxx
bunzip2 xxx.bz2 ==> xxx
xz -d xxx.xz ==> xxx
或者
unxz xxx.xz ==> xxx
复合包
xxx. xxx. xxx.
复合包打包(严格)
tar -cf xxx.tar xxx
或者
tar -cvf xxx.tar xxx
//将xxx打包成xxx.tar
//-c create 创建
//-f file 文件
//-v 打包的目录或者解压的目录可以看得到
//-t 查看包的内容
//-x 解压
tar -zcvf xxx. xxx
直接将xxx打包成xxx.
tar -jcvf xxx. xxx
直接将xxx打包成xxx.
xz xxx.tar ==> xxx.
复合包的解包
tar -xvf xxx.tar ==> xxx
tar -zxvf xxx. ==> xxx
tar -jxvf xxx. ==> xxx
unxz xxx. ==> xxx.tar
tar -xvf xxx.tar ==> xxx
bin #启动tomcat
bin #停止tomcat
tail -f log #看tomcat的控制台输出
#看是否已经有tomcat在运行了
ps -ef | grep tomcat
#如果有,用kill;
kill -9 pid #pid 为相应的进程号
#直接查看指定端口的进程pid
netstat -anp|grep 8196
远程登入mysql
mysql -uroot -p - -P3306
开启防火墙:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --permanent --zone=public --add-port=8080/udp
firewall-cmd --reload
firewall-cmd --state 查看防火墙状态
systemctl stop 关闭防火墙