Linux命令(简)
一、linux简介
linux就是一个免费使用操作系统。主要特点:
- 可靠性高
- 良好的可移植性 Linux是世界上唯一能够在嵌入式设备、个人计算机、服务器、小型 机甚至大型机上运行的操作系统
- 良好的开放性
- 强大的网络功能 可以充当应用服务器、文件服务器、打印服务器、邮件服务器、新闻 服务器等
- 强大的数据库支持支持Oracle、Sqlite、Sybase、DB2、MySQL、PostgreSQL
- 支持多种文件系统
- 支持多用户
二、Linux远程登录有以下三种形式
- telnet远程登录:
- ssh远程登录
- secureCRT/xshell/ssh远程登录
三、Linux目录结构
linux系统下一切皆文件,用xft工具打开,了解Linux主要目录结构。知道linux目录,对学习linux有很大的帮助。
- 树状结构,/为最高的根目录
- root:root用户的个人文件夹(家目录)
- bin:存放多数用户可用的命令
- boot:存放启动文件和配置信息,系统启动时会用
- dev:存放设备文件,/dev/hdc代表光驱
- etc:存放服务配置文件
- home:其他用户的家目录
- lib:存放程序运行所需要的库文件
- media:可移动设备的挂载目录
- mnt:设备挂载目录
- usr:用户程序存放目录
- var:存放经常改动的数据文件
- tmp:存放临时文件
四、Linux常用命令
1.上传/下载文件命令
- Xftp、FileZilla、Winscp等工具
- rz、sz命令
2. 登录
登录程序login负责用户登录认证用户身份
身份验证成功后,启动shell并初始化用户环境
检查电子邮件,并给予提示
失败登录由syslog程序记录到日志中,成功登录记录到 /var/log/wtmp,失败登录记录到/var/run/utmp
登录成功后,根据 PS1变量设置结果显示终端
PS1=“[\u@\H \W]\\\$ “
说明: \u :当前用户的账号名称 \H :完整的主机名称
\W 工作目录名称,所以只会列出最后一个目录
\$ :提示字符,如果是root时,提示符为:# ,普通
用户则为:$
3、注销
exit(常用于字符界面,图形界面只关闭终端窗口)
logout(仅文本终端)
4、重启
reboot
-w:不实际关机,用户登录信息写入/var/log/wtmp
-d:不将用户登录信息写入/var/log/wtmp
-f:强制重启
reboot 可以不接参数
shutdown
shutdown -r 延时分钟数 “提示信息”
shutdown -r now(now表示立即执行)
不能单独用,至少2个参数
5、关机
halt
-w:不实际关机,用户登录信息写入/var/log/wtmp o -d:不将用户信息写入 /var/log/wtmp
-f:强制关机
-p:关机后,关闭电源
可以不接参数
poweroff
除了无-p参数,其他与halt同
init 0
shutdown
shutdown -h 延时分钟数 “提示信息”
shutdown -h now(now表示立即执行)
6、用户和组
添加用户:
useradd 用户名
passwd 用户名
修改用户:
usermod -l 新用户名 -d 新家目录 旧用户名
usermod –l tom –d /usr/local/tomcat test4
删除用户:
userdel -r 用户名
切换用户:su 用户名或su - 用户名
获取超级用户权限:sudo
用法:sudo reboot
有一些命令是普通用户没有权限操作的,所以要用sudo来获取超级用户权限,如果普通用户要使用sudo命令,需要在/etc/sudoers文件中配置才可以使用,例如要besttest用户可以使用sudo获取root用户权限,使用root用户编辑/etc/sudoers文件,找到 root ALL=(ALL) ALL 这一行,在它下面加入bestest ALL=(ALL) NOPASSWD:ALL然后保存即可。NOPASSWD代表该用户使用sudo的时候不用输入密码。
增加组:groupadd 组名
修改组:groupmod –g 组新id –n 组新名 组旧名
删除组:groupdel 组名
7、网络配置
设置ip地址:
/etc/sysconfig/network-scripts/ifcfg-eth0
Linux下ip地址信息以及ip获取方式都是存放在ifcfg-eth0这个文件下的,如果有多块网卡的话就是ifcfg-eth0、ifcfg-eth1依次
临时设置ip地址:
ifconfig eth0 192.168.1.102
临时设置ip地址可以使用ifconfig 网卡 ip地址临时设置ip地址,重启后会失效
设置dns:/etc/resolv.conf
/etc/sysconfig/network
全局网络配置文件:
主要有两个配置项 NETWORKING(网络工作状态)和HOSTNAME(主机名)
修改主机名的话修改HOSTNAME的值即可
查看ip地址:ifconfig命令
重启、启动、停止网络命令:service network restart/start/stop
8、Vi编辑器
vi有两种模式:命令模式,进入vi时的默认模式,此模式下所有的用户输入都视为命令,用户在此模式下进行搜索、复制、替换等。编辑模式,用户在此模式下可以编辑文本内容。
模式切换:
命令进入编辑:i(当前位置) 、a(下一位置)、o(下一行) 编辑进入命令:esc
光标定位:
0移动光标到行首
$移动光标到行尾
/:从上往下开始查找
?:从下往上开始查找
撤销和重复
u复原前一个动作
. 重复前一个动作
复制粘贴删除:
nyy 复制光标所在的向下n行内容
p在光标处粘贴复制的内容
ndd删除光标所在向下n行的内容
ctrl + d:往下翻半屏内容
ctrl + u:往上翻半屏内容
shift + g:到文件末尾
x:删除当前位置字符
dd:删除整行
set number:显示行号
set nonu:取消显示行号
1,3y 复制第一行到第三行
1,3d 删除第一行到第三行
1,3s/str/str_new/g 替换第一行到第三行中的字符串
1,3s/str/str_new 替换第一行到第三行中的字符串第一个字符
1,3 g/str /d 删除第一行到第三行中含有这个字符串的行
搜索字符串
输入/+要查找的字符串:/bestest
按n键重新查找下一个,N查找上一个
退出vi
q 退出vi
q! 不保存退出
wq 保存退出
e!不保存修改的文件
w 保存
!强制,后面加叹号的话表示强制
9、文件管理命令
ls:列举指定目录下的子目录和文件
用法:ls [-arltrx] [name……]
ls -l test
cd:改变当前的目录或者处理绝对目录和相对目录
用法:cd目录
-cd回车:退到当前用户个人目录
-cd / :退到最根目录
-cd ../xx:退到上级目录的xx目录
-cd .:停留在当前目录
-cd .. :返回上级目录
-cd –:回到上一次操作的目录
-cd ~: 回到用户家目录
cp:复制指定文件到另一文件或目录
用法:cp [-abrifLP] [source] [dest]
主要参数:
-a:尽可能的将文件的属性、权限的内容都照原状复制
-b:如果目的文件存在,就创造一个备份
-r:若源中有子目录,则将子目录下的文件及目录亦全部复制至目的目录
-i:若目的地有重复的文件,询问是否覆盖
-f:若目的地有重复的文件,则覆盖原有文件
-L:复制符号链接,自动修改链接以保证链接有效
举例:cp -rf a.txt /tmp
mv:用来为文件或目录改名,或者将文件由一个目录移入另一个目录中
用法:mv[options] 源文件或目录 目标文件或目录
rm:用来删除文件或目录
用法:rm [-ifr] name
rmdir:用来删除一个空文件夹
用法:rmdir [-ifr] name
cat:用于连接并显示指定的一个和多个文件的有关信息
用法:cat [options] 文件1 [文件2]……
主要参数:
-n:由第一行开始对所有输出的行数编号。
-b:和-n相似,只不过对于空白行不编号。
-s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。
举例:将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件:cat a.txt b.txt > c.txt
head:显示文件的开头至标准输出中
用法:head [参数]... [文件]...
主要参数:
-n<行数> 显示的行数
tail:查看文件末尾内容
用法:tail [参数] [文件]
主要参数:
-f 动态读取
举例
动态查看日志 tail -f err.log
查看末尾10行日志 tail -10 err.log
动态查看末尾5行日志 tail -5f err.log
more和less:分屏显示文件内容,可以逐页或者逐行显示文件内容
用法:more [参数] 文件 less [参数] 文件
举例:less a.txt more a.txt
回车为显示下一行
空格为转到下页
G 移动到最后一行 #less
g 移动到第一行 #less
du:文件和目录的磁盘使用空间
用法:du [选项][文件]
-s或--summarize 仅显示总计,只列出最后加总的值
-m或--megabytes 以MB为单位输出
lsof:列出当前系统打开文件的工具
用法:lsof [options] filename
lsof filename 显示打开指定文件的所有进程
lsof -i :80 查询指定端口打开的文件
Lsof -p pid 查询指定的pid打开的文件
chmod:用来给文件或者文件赋权限
用法:chmod [选项][文件]
chmod有两种方式,数字方式和文本方式:
数字方式:
[n][n][n] r=4 w=2 x=1
rwx:4+2+1; r-x:4+1; rw-:4+2
文本方式
u -- 该档案的拥有者;
g -- 与该档案的拥有者属于同一个群体(group)者;
o -- 其他以外的人;
a -- 所有
+ -- 增加权限
- -- 去掉权限
-R 递归,主要用于一个目录,把这个目录下所有的文件/文件夹赋权限
例子:
给text文件赋予rwxr-xr-x权限:chmod 755 text
给text及其子目录底下所有文件赋予rwxr-xr-x权限:hmod -R 755 text
为文件abc的组拥有者增加rw权限:chmod g+rw abc
为abc文件的用户拥有者去除x权限:chmod u-x abc
指定文件abc的其他用户权限为rw-:chmod o=rw-
为文件abc及其子目录底下的所有文件的全体用户增加x权限:chmod -R a+x abc
chgrp:改变文件所属组
用法:chgrp [选项] [组] [文件]
主要参数:
-R 递归
注意:使用权限是超级用户
chown:改变文件所有者和所属组
用法:chown [选项] 用户或组 文件名
主要参数: -R 递归式地改变指定目录及其所有子目录、文件 的文件主
注意:使用权限是超级用户
举例: chown -R test:test foo
wc:统计指定文件中的行数、字节数、字数,并将统计结果显示输出
用法:wc [选项] [文件]
主要参数:
-c 统计字节数。
-l 统计行数。
clear、history
clear 清屏
history 查看历史命令
10、搜索命令
grep:显示文件中的匹配行
用法:grep [参数] 字符串 文件名
主要参数:
无参:显示匹配行
-c:显示匹配行数
-e 字符串:匹配特殊字符串,如-开头
-i:忽略大小写
-v:输出不匹配行
-w:匹配指定字符串
可以和别的命令通过"|"管道符连接使用
示例:
grep -c “foo” a.txt
ps -ef|grep httpd |grep -v "grep"
find:查找目录下的文件
用法: find 目标目录 搜索参数 操作参数
主要参数:
-name 文件名:可以跟通配符
-ctime 天数:文件最后修改时间为指定天数之前,负数表示之后
-user 用户名:属于用户的目录和文件
示例:find / -name besttest
11、归档压缩命令
gzip/gunzip压缩和解压缩
命令格式:
gzip –[1…9] [trv] file
gunzip file
-1:表示压缩速度最快,压缩比最低
-9:表示压缩速度最慢,压缩比最高
-t:表示校验压缩文件的完整性
-r:表示压缩时包含子目录中的内容
-v:表示压缩时显示正在压缩的文件名和压缩比等资料
示例:gzip -1trv test.txt
gunzip test.txt.gz
zip/unzip压缩zip包和解压缩以.zip结尾压缩文件
命令格式:
zip [选项] 压缩文件名 需要压缩的文档列表
-r 递归压缩,将指定目录下的所有文件以及子目录全部压缩
-x “文件列表” 压缩时排除文件列表中指定的文件
-m 将文件加入压缩文件压缩后,删除原始文件,即把文件移到压缩文件中
- 压缩级别 压缩级别是一个1~9的数字
可以不加任何参数使用
unzip [选项] 压缩文件名
-x "文件列表" 解压文件,但不包含文件列表中指定的文件
-t 测试压缩文件有无损坏,并不解压
-v 查看压缩文件的详细信息,具体包括压缩文件中包含的文件大小、文件名和压缩比等,并不解压
-n 解压时不覆盖已经存在的文件
-o 解压时覆盖已经存在的文件,并且不要求用户确认
-d 目录名 把压缩文件解压到指定目录下
可以不加任何参数
示例:zip -9r /opt/etc.zip /etc #把/etc下所有文件和文件夹压缩到/opt下的etc.zip
zip –r /opt/var.zip /var –x “*.log”#把/var下所有的文件和文件夹除了以.log结尾的都压缩到/opt目录的var.zip中
unzip –o /opt/etc.zip –d /etc #把/opt/etc.zip解压到 /etc目录下
tar:文件打包
用法 :tar[参数] 目标文件 源目录或文件
主要参数:
-c:创建新文档
-x:解压缩归档文件
-f 文件名:使用归档文件
-j:使用bzip2解压缩
-z:使用gzip解压缩
-v:详细输出模式
示例:
tar zcvf test.tar test#压缩
tar zxvf test.tar #解压缩
12、进程相关命令
ps:显示瞬间进程 (process) 的动态,使用权限是所有使用者。
主要参数: ps的参数非常多, 此出仅列出几个常用的参数
-A或-e:列出所有的进程。
-l:显示长列表。
-m:显示内存信息。
-w:显示加宽可以显示较多的信息。
-f:显示不同进程之间的关系。
a:显示终端上的所有进程,包括其它用户的进程。
-au:显示较详细的信息。
-aux:显示所有包含其它使用者的进程。
常用的参数是-aux和-ef
可以用管道符连接其他命令使用
示例:ps -ef |grep httpd #查询Apache相关进程
kill:用来终止指定的进程
命令格式:kill [参数][进程号]
主要参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
-9 强制终止进程
可以不加任何参数直接使用
可以后面跟多个pid
示例:
kill -9 2321
kill -9 2312 2819
kill 8321
后台运行进程
命令最后加&
命令执行后显示:后台程序序列号和进程号,若终端被关闭,则带&的后台命令也一同关闭,可以使用ps -aux查看
示例:python test.py &
nohup 命令 &
终端被关闭,后台进程继续运行
示例:nohup sh startWebLogic.sh &
jobs命令可以查看后台进程序列号及执行情况直接输入jobs即可
crontab定时任务
使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户
格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }
不加-u参数的话,默认是当前用户
主要参数
-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。
-r:删除目前的时程表。
-l:列出目前的时程表。
crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,*代表每分钟都执行
示例 :
* * * * * sh /opt/lampp/test.sh 表示每分钟执行一次test.sh这个脚本
13、软件安装相关命令
rpm
命令格式 rpm [参数] [rpm安装包]
主要参数:
-i 安装
-U 更新(升级)
-e 卸载
-v 显示安装信息
-h 显示安装进度
示例:
rpm -ivh jdk.rpm#安装jdk
rpm -e jdk.rpm
yum命令
yum install httpd#安装Apache
yum -y install httpd#如果有选项全部同意安装
yum list|grep httpd#从yum列表中查找你需要的软件
yum update httpd #yum升级Apache
yum list installed |grep mysql#查询是否安装mysql
yum remove mysql#卸载yum安装的mysql
源码安装
安装三部曲
1、生成makefile编译文件
./configure 一般安装包下面都有一个configure文件,用来生成makefile编译文件,常用的参数
--prefix 指定安装目录
--with-xx 指定依赖文件的目录
2、make编译
make命令也需要安装,会根据./configure产生makefile文件编译写好的c语言程序,产生可运行的文件
3、make install
make install的作用是把编译好的文件复制到指定的目录下,也就是第一步--prefix指定的目录,如果没有指定目录的话,还是在当前目录下
14、其他命令
设置环境变量
简单的说计算机在执行命令的时候是在环境变量找对应的命令的位置的。如果不正确设置环境变量就不能正确使用相应的命令。Linux中系统变量是在/etc/profile目录下的,用户的环境变量则在用户的家目录下的.bash_profile文件中,系统环境变量会在开机的时候全部加载,用户的环境变量之后在用户登录时加载。
比如说没有mysql命令,我们的mysql客户端是在/opt/lammp/bin目录下,那就可以把/opt/lammp/bin加入到/etc/profile就可以使用mysql命令了 export LAMPP=/opt/lampp/bin,然后再source /etc/profile 重新加载一下就可以生效了
系统服务
chkconfig:chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。
常用参数:
chkconfig --add test.sh #将test.sh作为一个系统服务,但是test.sh这个脚本必须放在/etc/rc.d/init.d目录下(还有文章,看注释)
chkconfig --del test.sh #删除一个系统服务
service test.sh start #运行刚才设置的系统服务
chkconfig test.sh on 开机启动
chkconfig test.sh off 取消开机启动
一些常见的系统服务:
iptbles #防火墙
network #网络
httpd #Apache
nginx #nginx
开机启动脚本
除了刚才那种把做成系统服务,然后做成开机启动,还有一种就是在/etc/rc.d/rc.local文件中加入要开机执行的脚本
例如要开机启动lampp,在/etc/rc.d/rc.local文件中加入/opt/lampp/lampp start即可
临时关闭防火墙 service iptables stop,重启后会失效
date命令,显示当前系统时间,后面可以跟日期格式
cal查看日历,后面可以跟年份查看指定年份的日历
whoami查看当前登录用户
who查看当前有多少用户在使用系统
四、shell和AWK
AWK
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
awk命令格式和选项
awk [选项参数] '{命令参数}' file
awk命令选项
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-f scripfile 从脚本文件中读取awk命令
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
awk常用的几个内置参数
$0 表示整个当前行
$n 每行第n个字段
NF 字段数量变量,也就是每行有多少个字段
NR 每行的记录号,多文件记录递增
awk的if判断
if (expression) {
statement;}
else {
statement2;}
Shell编程
Shell既是一种命令语言,又是一种程序设计语言。Shell有两种执行命令的方式:
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
举例:
新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本的执行,见名只意就好。
vi test.sh
#!/bin/bash
echo “hello world”
#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell,echo命令用于向窗口输出文本。
运行shell的两种方法
作为可执行程序运行
chmod +x test.sh #加上可执行权限
./test.sh
通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。
作为解释器的参数运行
bash test.sh