一、查看某个端口号被占用 命令
lsof -i :9999 | grep "(LISTEN)"
ps -aux | grep tomcat 查看tomcat进程
二、添加用户 和修改用户密码并且给该用户分配操作某个文件
useradd –d /usr/sam -m sam
-d 表示创建目录 -m 表示如果没有该目录自动创建 sam 是创建的用户
passwd 修改用户的密码
userdel sam 删除用户
三、修改文件所属组
使用chown命令可以修改文件或目录所属的用户:
命令:chown 用户 目录或文件名
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
使用chgrp命令可以修改文件或目录所属的组:
命令:chgrp 组 目录或文件名
例如:chgrp qq /home/qq (把home目录下的qq目录的所属组改为qq组)
四、开关防火墙
1、重启后生效 (永久性生效,重启后不会复原)
开启 chkconfig iptables on
关闭 chkconfig iptables off
2、 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
3、查看防火墙状态
service iptables status或chkconfig iptables --list
五、重启网络
service network restart
六、查看主机名
hostname
改主机名 vi /etc/sysconfig/network
七、文件处理命令
命令:ls(list)
权限:所有用户(此后如不显示,则为所有用户)
描述:显示文件目录
语法:ls 选项 [-al] [文件或目录]
a:显示所有文件,包括隐藏文件
l: 显示详细信息
命令:touch
语法:touch [文件名]
描述:创建一个空文件
命令:mkdir
语法: mkdir [-p选项表示递归创建文件夹] [文件夹名称]
描述:创建一个文件夹
命令:cp (copy)
语法:cp [源文件] [目标文件]
cp -r [源目录] [目标目录]
描述:复制文件或目录
命令:rm(remove)
语法:rm -f [文件]
rm -r [目录]
rm -rf [目录,包含目录下内容]
描述:删除文件或目录
命令:cat
语法:cat [文件名称]
描述:查看文件内容(内如过多,显示内容可能不全)
命令:more
语法:more [文件名称]
描述:查看文件内容,可完全显示
用法:使用空格进行翻页,回车显示下一行,q退出(或者ctrl+c)
命令:head
语法:head -number [文件名]
描述:查看文件的前多少行
命令:tail
语法:tail -number [文件名]
描述:查看文件的后多少行
mv 1 修改文件名称的功能 : mv [源文件名称] [新文件名称]
2 移动文件位置 : mv [源文件名称] [新文件位置+ 新文件名称]
命令:ln(link)
语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)
描述:创建软链接文件
软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。
软链接就像windows系统中的快捷方式一样,特点也都类似。
硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。
另外:硬链接不能跨文件系统分区,而软连接可以。
8、权限命令
命令:chmod
语法:chmod [{ugo}{+-=}{rwx}] [文件或目录] u表示user , g表示group ,o表示other
chmod [mode=421] [文件目录] 4表示r 2表示w 1表示x 777表示user group other都有rwx的权限
描述:改变文件或目录的权限
形如:chmod g+w filename 表示给group加w权限
chmod ugo+rwx filename 表示给user group other 加读写执行权限
chmod ugo-rwx filename 表示给user group other 减读写执行权限
形如:chmod 761 filename 7表示user有rwx权限 , 6表示group有rw权限 ,1表示other有x权限
命令:chown
语法:chown user 文件
描述:改变文件的所有者
示例:chown newuser t1.sh
useradd username 添加用户
passwd username 为用户设置密码
命令:chgrp
语法:chgrp group 文件
描述:改变文件的所属组
示例:chgrp adm t1.sh
9、文件搜索命令
命令:find
语法:find [搜索范围路径] -name 【文件名称】(根据文件名查找)
如 find /etc -name init 查找etc目录下的init文件
如 find /etc -name *init 查找etc目录下以init结尾的文件
如find /etc -name ?init 占位符 查找etc目录下从第二个单词是init的文件 如ainit
find [搜索范围路径] -size [(+-)文件大小] (根据文件大小查找,大于+ 小于-)
如 find /etc -size -30 表示查找etc目录下小于30的文件 (+30表示找大于30的文件)
find [搜索范围路径] -user(文件的所有者)
find /etc -user root
find [时间查找] [以天为单位]
天: ctime、atime、mtime
分钟:cmin、amin、mmin
c表示:change 改变文件属性的意思(比如所有者、所属组、权限变更)。
a表示:access 表示被访问过的意思(比如被查看过等)。
m表示:modify 更改内容的意思。
在时间前面添加:-表示之内,+表示之外
如 find /etc -mmin -120 表示查找120分钟以内被修改过的文件
find应用的连接符:
-a (and的意思,逻辑与)
-o(or的意思,逻辑或)
如 find /etc -mmin -120 -a find /etc -name *init 表示查找120分钟以内被修改过的文件并且文件名字是以init结尾的文件
find查找:根据文件类型进行查找:-type
其中:f表示二进制文件,l表示软连接文件 d表示目录
如 find /etc -type f 表示查找etc目录下的二进制文件
命令:which
语法:which [命令名称] 如which rm 查看rm命令所在的文件位置
描述:查看命令所在的目录位置
在linux里面一般只有两种命令,第一种是所有用户都可以使用,第二种则是只允许管理员使用,还有一个命令叫whereis,和which使用类似
find的连接执行符号:
find ... -exec [执行命令] {} \;
表示查找出结果并执行后面的命令把结果进行操作
如find /usr/local/test/ -name aa.aa -exec rm -rf {} \; 表示找道到aa.aa并执行rm -rf命令删除aa.aa
find ... -ok [执行命令] {} \;
如find /usr/local/test/ -name aa.aa -ok rm -rf {} \; 表示找道到aa.aa并执行rm -rf命令删除aa.aa 但是要输入y或n 确认是否执行此命令
ok和exec的区别就是ok有询问确认的意思
find -inum [i节点标号]
如find -inum 15
根据i节点查找文件 ls -i可以查看i节点,在linux系统中,所有的文件都有一个唯一的标识,方便linux内核去调用,这就是i节点
命令:locate
语法:locate [文件名称] 如locate aa.aa 一般先执行updatedb命令在执行locate aa.aa
描述:查找文件,根据linux数据库内部的索引(updatedb命令,可以手工更新updatedb数据库,一般和locate配合使用)
10、帮助命令 告诉命令怎么使用
命令:man
语法:man [命令或者配置文件], 如man ls
命令:whatis
语法:whatis [命令]
描述:查看命令的描述。
命令:--help
语法:[命令] --help
描述: 查看命令的选项用法。
11、压缩解压缩命令
命令:gzip
语法:gzip [文件名称] 如gzip aa
描述:压缩的时候不保留原文件,并且只能压缩文件不能压缩目录
命令:gunzip
语法:gunzip [已压缩的文件] 如gunzip aa.gz
描述:解压缩文件,不保留源文件
命令:tar
语法:tar [zcvf] [zxvf] [打包文件名.tar.gz] [源文件]
-c 产生tar打包文件(必选)
-x 产生的解压缩文件(必选)
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
最后配置加-C 表示文件解压后存放的路径 tar -zxvf aa.tar.gz -C /usr/local 把文件解压到usr/local目录下
如 tar -zxvf aa.tar.gz 解压 -zcvf表示压缩
file命令可以查看任何文件的类型
命令:zip
语法:zip 选项[-r] [压缩后文件名称] [源文件]
描述:zip的格式是windows和linux通用的格式,可以压缩文件和目录,压缩目录时需要选项-r。
命令:unzip
语法:unzip [解压缩的文件]
描述:进行解压缩
最后配置加-d 表示文件解压后存放的路径
12、过滤:grep,可以将指定内容进行过滤然后输出。
将一个命令的输出传送给另一个命令,作为另外一个命令的输入。
ls -l /etc | more (表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)
ls -l /etc | grep init(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)
ls -l /etc | grep init | wc -l (最后进行统计显示的个数)
逻辑与(&&)
形如:ls && pwd(第一个命令如果执行成功。第二个命令才会执行)
逻辑或(||)
形如:ls || pwd (第一个命令执行成功,则第二个不执行,第一个命令执行失败,则执行第二个)
13、输入输出重定向:
0 (stdin) 标准输入 1 (stdout)标准输出 2 (stderr)标准错误输出
输出重定向:就是把输出的结果显示到一个文件上 (>表示输出重定向 ,>>进行结果的追加 ,2>错误重定向一般是把程序执行的错误日志信息存放到指定的log日志中去)
14、切换用户
su - username
15、vi 编辑
插入时
i表示在当前位置 o表示下一行开始 a表示当前光标的第二个位置 A表示在当前光标第一行末尾 I表示在当前光标开头插入 O 表示在光标上行插入
set nu 设置行号 set nonu取消行号
查找
在插入的时候输入\ 后面跟要查找的内容 如\a 表示查找a字母
删除
x表示删除光标位置的字符
nx表示删除光标所在的n个后的字符
dd表示删除所在的行
dG删除光标所在行值尾行内容
:n1,n2d 表示删除指定范围行数
复制粘贴
yy 或Y复制当前行
nyy 或nY复制当前以下几行
dd剪切
ndd剪切当前以下几行
p粘贴 在当前所在下行 P 粘贴当前所在上行
替换
%s/old/new/g 如%s/ad/55/g 表示把ad换成55
:n1,n2s/old/new/g 在一定范围内替换指定字符串
16、ps 查看进程
-l 表示长格式显示
-a表示查看所有用户的进程
-e 表示所有进程
stat:当前进程状态 S表示休眠 R 表示运行状态 D表示不可中断的休眠状态 Z僵死状态 T停止状态
uid 表示当前启动进程的用户
pid 表示进程号
ppid 表示父进程号
tty 进程启动的终端
in 进程的优先级
time 进程启动以来占用的实际时间
cmd 进程的命令
ps -el 查看所有进程
ps -aux查看当前进程占用cpu和内存百分比
17、nohup
语法 nohup program & 表示使用进程在用户退出登录后仍继续执行
18、top 查看linux情况
19、定时任务
at 表示多长时间后执行 ctrl+d 保存 定时任务
绝对时间 at HH:MM YYYY-MM-DD
相对时间 at now +n minutes 或 at now +n hours 或 at now +n days
crontab
crontab {-l|-r|-e}
-l 表示当前的crontab
-r表示删除当前的crontab
-e表示编辑当前的crontab
如果crontab程序没有启动 则需要手工启动
查看crontab是否启动命令 ps -el | grep crond
启动crontab /etc/rc.d/init.d/crond start
crontab文件建立好以后可以在/var/spool/cron目录下找到
crontab -e 新建一个crontab
20、shell编程
变量
本地变量 var_name=值 如 A=1 本地变量:只属于某一个bash的变量。
局部变量 local var_name =值 如 local A=1 作用域:当前代码段
环境变量 export 名字=值 如 export java_home="/usr/local/jdk" 作用域:当前的shell和其子shell
位置变量 用于 脚本执行的参数,$1 表示第一个参数,以此类推 $1,$2….
特殊变量 $? :上一个命令的执行状态返回值 $# 传递到脚本的参数个数 $* 传递到脚本的参数,与位置变量不同,此选项参数可超过9个
撤销变量
unset 变量名
程序有两类返回值
执行结果
执行状态,$? : 0:表示正确,1-255:错误
输出重定向:
>覆盖重定向
>> 追加重定向
2> 错误覆盖重定向
2>>错误追加重定向
1>>标准追加重定向
1> 标准覆盖重定向
&> 全部重定向
引用变量:${变量名},一般可以省略{}
先定义一个变量A=1
单引号:强引用,不作变量替换 echo '$A' 输出 $A
双引号:弱引用,做变量替换 echo "$A" 输出1
如果想在变量前后加字符 可以 用{} 如 echo “aa${A}bb” 输出 aa1bb
反引号:``命令替换 echo `pwd` 输出 /root
第一个shell编写
第一行一定要写 #!/bin/bash
写脚本的时候 exit 跟个数字 数字0表示脚本还会执行 非0表示脚本退出不会继续执行
vi adduser.sh
#!/bin/bash
#添加用户 $1 表示执行sh脚本时传递的第一个参数
useradd $1
#设置密码 将标记输出的第一个参数 作为(新密码)标准输入的值 并且把修改密码的信息输入到null里
echo $1 | passwd --stdin $1 &>/dev/null
#打印成功信息
echo “user add success”
条件判断:
条件表达式:
[ expression ] 或 test expression
整数比较:
-eq : 比如:[ $A –eq $B ]
-ne , -gt ,-lt,-ge,-le
在linux 中 命令执行状态:0 为真,其他为假
逻辑与: &&
逻辑或: ||
逻辑非: !
#!/bin/bash
#用户存在 就打印用户存在 并且退出脚本执行 exit 后的数字非零表示退出不执行 零表示执行
id $1 &> /dev/null && echo "$1 用户已经存在" && exit 2
#用户不存在 就添加用户
id $1 &> /dev/null || useradd $1
#用户不存在就给用户设置密码
id $1 &> /dev/null && echo $1 | passwd --stdin $1 &>/dev/null && echo "$1 用户添加成功!!"
if elif else fi
当if和then 不在一行的时候 ;分号可以省略
if 条件 ;then
语句
elif 条件 ; then
语句
else
语句
fi
#!/bin/bash
count=`wc -l /etc/inittab | awk '{print $1}'`
if [ $count -gt 28 ] ; then
echo '好大文件'
elif [ $count -gt 25 ]
then echo '11小文件'
else
echo '小文件'
fi
-a : 逻辑与,并且 -o :或者 : if [ $# -gt 1 –a $# -lt 3 –o $# -eq 2 ] ; then
bash –x shell 文件 :debug 执行文件 如 bash -x test4.sh
Shell 中如何算术运算
let 算术运算表达式
let C=$A + $B
如 A=1 B=1
let C=$A + $B
echo $C
$[算术表达式]
C = $[$A+$B]
如 A=1 B=2
C=$[$A+$B]
echo $C
文件测试: [ ] 需要中括号
-e FILE :测试文件是否存在
-f FILE :测试文件是否为普通文件
-d FILE :测试文件是否为目录
-r FILE 该文件是否有读权限
-w FILE 该文件是否有写权限
-x FILE 该文件是否要偶执行权限
如[ -e usr ]
特殊变量:
$# $@
字符串测试:
== 等号两端需要空格
!=
-n string : 判断字符串是否为空
-s string : 判断字符串是否不空
for循环
for 变量 in 列表 ; do
语句
done
如#!/bin/bash
for i in 1 2 3 4 5 ; do
echo $i
done
计算 100以内能被三整除的和
#!/bin/bash
count=0
for i in {1..100} ; do
if [ $[$i%3] -eq 0 ] ; then
count=$[$i+$count]
fi
done
echo $count
生成列表:
1、{1..100}
2、seq [起始数] [跨度数] 结束数 seq 20表示从1到20 或 seq 5 20 表示从5到20 seq 5 5 20 表示 5 10 15 20 注意要把 seq 20放在反引号里`seq 20`
3、ls /etc 文件列表 把ls /etc 的执行结果当中列表 `ls /etc` 也要放在反引号里
While 循环
格式一
while 条件;do
语句
[break]
done
格式二 死循环
while true
do
语句
done
格式三 死循环
while :
do
语句
done
格式四 死循环
while [ 1 ]
do
语句
done
格式五 死循环
while [ 0 ]
do
语句
done
case 语句
case 变量 in value1)
语句 ;;
value2)
语句 ;;
*)
语句
;;
esac
如 #!/bin/bash
case $1 in 1)
echo 1 ;;
2)
echo 2 ;;
3)
echo 3 ;;
*)
echo "other" ;;
esac
select
select 变量 in 列表
do
语句
done
#!/bin/sh
# select var in [params] do ... done
select var in "java" "c++" "php" "linux" "python" "ruby" "c#"
do
break
done
echo "you selected $var"
21、一台机器的多个tomcat部署
如果想在多个ip上操作tomcat 要配置多个ip之间的ssh免登陆
#!/bin/sh
if [ $1 == rescenter ];then
cd /root/workspace/tomcatspace/t2/bin/
./shutdown.sh
rm -rf /root/workspace/tomcatspace/t2/webapps/rescenter*
cp /root/workspace/tomcatspace/t1/webapps/rescenter.war /root/workspace/tomcatspace/t2/webapps/
cd /root/workspace/tomcatspace/t2/bin/
./startup.sh
echo "rescenter finish"
fi
if [ $2 == restask ];then
cd /root/workspace/tomcatspace/t2/bin/
./shutdown.sh
rm -rf /root/workspace/tomcatspace/t2/webapps/restask*
cp /root/workspace/tomcatspace/t1/webapps/restask.war /root/workspace/tomcatspace/t2/webapps/
cd /root/workspace/tomcatspace/t2/bin/
./startup.sh
echo "restask finish"
fi
if [ $3 == resintf ];then
cd /root/workspace/tomcatspace/t4/bin/
./shutdown.sh
cd /root/workspace/tomcatspace/t5/bin/
./shutdown.sh
rm -rf /root/workspace/tomcatspace/t4/webapps/resintf*
rm -rf /root/workspace/tomcatspace/t5/webapps/resintf*
cp /root/workspace/tomcatspace/t3/webapps/resintf.war /root/workspace/tomcatspace/t4/webapps/
cp /root/workspace/tomcatspace/t3/webapps/resintf.war /root/workspace/tomcatspace/t5/webapps/
cd /root/workspace/tomcatspace/t4/bin/
./startup.sh
cd /root/workspace/tomcatspace/t5/bin/
./startup.sh
echo "resintf finish"
fi