作为后端工程师,经常会需要操作服务器上的文件,比如发布新版本,Tomcat调优,更改服务器配置,查看服务器运行状态等。这个时候就需要掌握一些基本的操作命令。
mkdir dirname 创建文件夹
mkdir -p /tmp/a/b 递归创建目录
rm -rf dirname 删除目录及内部文件,-r:表示递归删除文件及文件夹;-f:表示强制删除,不提示
touch filename 创建文件
mv ins.war ins_new.war 重命名
mv ins.war webapps/ 移动文件到指定目录
cp index.jsp index_new.jsp 复制并重命名
cp -r ./a /opt/ 将当前目录下的a目录复制到/opt/webapps/目录下,-r:递归持续复制,用于目录的复制行为
cp -r ./a.war /opt/ 复制文件(将当前目录下的a.war文件复制到/opt/webapps/)
ls -ld /tmp/a 查看a目录的信息
scp 远程文件拷贝
条件:两台Linux局域网为局域网,能通信,无防火墙。
注意:输入命令后有一次提示,输入【yes】即可,然后输入目标服务器账号的密码。
scp /gxxj/ins.war yangkun@132.252.6.38:/data/ 将107服务器上的ins.war传到38服务器指定目录
scp -r /data/ yangkun@132.228.125.45:/var/tomcat-7/ 将38上的Tomcat文件夹移到45机器上
scp -P 1234 /root/abc.zip root@192.168.1.102:/abc/ 若SSH端口不是默认的22,比如,是端口1234 则加-P参数
unzip -o ac.war 解压war文件
unzip abc.zip -d /home/kayak 解压文件到指定目录
tar -zcf Japan.tar.gz Japan
tar -xzvf apache-tomcat-7.0.69.tar.gz 解压tar.gz文件,x 解包 v 显示详细信息 f 指定解压文件 z 解压缩
zip -r sdkacbak sdkac 压缩文件,zip -r 压缩后文件名 需要压缩的文件名【较多用于文件夹备份】
zip -r kms.zip /home/kms 压缩并指定目录
vim cas.properties 查看文件,可编辑,wq保存并退出 ZZ保存并退出 q!强制退出并忽略所有更改 e!放弃所有修改,并打开原来文件
cat filename 查看文件内容(不适合查看长文件)
tac filename 同上,内容是倒过来显示的,即从最下一行开始显示
cat /abc.log |grep fas 打印出abc.log文件中存在fas字符的行
ps -ef|grep tomcat 查找包含tomcat字符的服务信息
grep -iv [指定字串][文件] 在文件中搜索字串匹配的行并输出,-i不区分大小写,-v排除指定字串,-n输出行号
grep mysql /root/install.log 在install.log文件中查找含有mysql字符的行,并列出该行内容 --color=auto 搜索出的关键字用颜色显示
grep -v ^# /etc/inittab 去掉以#开始的行(注释行,^表示行首)
grep -rn "8088" * 查看当前目录,及子目录下包含8088字符的文件号,-r递归查找,-n显示行号
grep 192.168.11.1 show.txt 查找show.txt文件中包含192.168.11.1字符的行
./startup.sh;tail -300f ../logs/catalina.out 边启动tomcat边查看日志,显示最后300行日志信息 more /etc/services 分页显示文件内容,适合长文件查看,空格或f:翻屏,回车:下一行,q:退出
less /etc/services 同上,但支持向上翻页,pageup:向上翻页,上下箭头:上下一行,输入/,加关键字可搜索,使用n查找下一个关键字位置
head -n 7 /etc/services 显示文件前7行内容
tail -n 3 /etc/services 显示文件最后3行内容
tail -f /var/log/messages 动态显示文件末尾内容
ln -s [原文件] [链接文件] 创建链接,-s软链接,软链接相当于Windows系统中的快捷方式,硬链接相当于cp -p,文件复制且同步更新
ln -s /etc/issue /tmp/issue.soft 创建文件/etc/issue的软链接/tmp/issue.soft
ln /etc/issue /tmp/issue.hard 创建文件/etc/issue的硬链接/tmp/issue.hard
chmod 777 filename 给文件分配读写运行权限(4读,2写,1可运行) 第一个数字代表文件所有者,第二个数字代表所在用户组,第三个数字代表其他用户
chmod 754 * 给当前目录的所有文件赋权,文件所有者可读可写可运行,用户组可读可运行,其他用户可读
chmod -R 777 /tmp/a 将/tmp/a目录及以下目录权限赋予777 -R:递归修改,不加该参数只是修改了a目录的权限,a目录下的子目录权限不变
chown username filename 改变文件所有者(change file ownership)
chgrp groupname filename 改变文件所属组
umask -S 以rwx形式显示新建文件缺省权限,即新建的文件有什么权限(注意:文件类型会自动去掉可运行权限)
umask 023 将新建文件的权限设置为754(rwxr-xr--) 023=777-754
usaradd username 创建用户
passwd username 设置密码
userdel -r username 删除用户 -r 删除用户的同时删除用户家目录
groupadd groupname 创建用户组
su - username 切换用户 -:代表连带用户的环境一起切换 -c:仅执行一次命令,而不切换用户身份
sudo su - 切换用户
w 查看当前登录用户(详细)
who 查看当前所有登录用户
last 查看用户的登录记录,包括多次登录的记录
lastlog 查看所有用户的最后登录时间
touch /etc/nologin 禁止除了root以外的所有用户登录,该命令是在/etc目录下创建了一个nologin文件
passwd -l username 禁止指定用户登录
passwd -u username 解除被禁止登陆的用户
passwd -d username 清除指定用户的密码,可以无密码登录该用户
find [搜索范围] [搜索条件] 消耗资源,速度慢,最好不用
find / -name init 全盘搜索名为init的文件
find /etc -name init 在目录/etc中查找文件init(只有文件名为init的文件才会被搜索出来)
find /etc -name *init* 在目录/etc中查找文件名包含init的文件,*代表多个字符
find /etc -name init??? ?匹配单个字符
find -name *.text 查找以.text结尾的文件
find /var/log -size +25k 查找指定目录下文件大小大于25k的所有文件,+表示大于,-表示小于,不写表示等于,单位k为小写,M为大小
find path -size +25M -a -size -30M 查找指定目录下文件大小大于25M并且小于30M的所有文件,-a表示and,-o表示or
locate filename 在资料库中查找,速度非常快。因为资料库不是实时更新,所以可能新建的文件查找不到,系统定期更新资料库。
updatedb 立即更新资料库,资料库不收录/tmp目录下的文件,即使updatedb,/tmp下的文件locate命令也查找不到
which cp 搜索cp命令所在的目录及别名信息
which useradd 搜索useradd命令所在的目录
whereis useradd 搜索useradd命令所在目录,以及帮助文档路径
write <用户名> 给用户发信息,以Ctrl+D保存结束(需要用户登录状态)
write linzhiling 给linzhiling用户发送信息,回车后书写要发的信息,前提是用户是已登录状态
wall [message] 发送广播信息,即给所有在线用户发送信息
mail <用户名> 给用户发送邮件,即使网络不通也可以使用
ping 192.168.1.2 给指定IP地址发送数据包,测试网络连通性,Ctrl+C 停止
ping -c 3 192.168.1.2 给指定IP地址发3次数据包
ifconfig 网卡名称 IP地址,查看和设置网卡信息
traceroute 显示数据包到主机间的路径
traceroute www.sina.com.cn 查看本机到新浪网的路由节点,一般用来查看哪个节点的网络出现问题
netstat 显示网络相关信息 -t TCP协议 -u UDP协议 -l 监听 -r 路由 -n 显示IP地址和端口号
netstat -tlun 查看本机监听的端口(udp没有监听状态,只有tcp有)
netstat -an 查看本机所有的网络连接 ESTABLISHED:正在连接的网络
netstat -rn 查看本机路由表
netstat -ano 查看端口号
netstat -nat|grep -i "8080"|wc -l 查看某端口连接数
setup 配置网络
df -hl 查看磁盘占用情况
du -sh 当前目录占用磁盘空间大小,不包括子目录和目录下的文件,
-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
du -h filename 指定文件占用的磁盘空间大小
du -ah --max-depth=1 查看某目录下全部文件及文件夹的磁盘占用大小和目录总占用空间大小,-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小;-h:以人类可读的方式显示;不加--max-depth=1会把所有下下级等目录占用空间都列出来
du -h * 查看当前目录及其子目录的磁盘占用情况
top 性能分析,动态显示内存(MEM),CPU占用情况
sync 强制将缓存区数据写入硬盘,释放缓存区,sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。
sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件;
echo 1 0 默认 ,1 清空页缓存, 2 清空inode和目录树缓存, 3 清空所有缓存。可以通过cat /proc/sys/vm/drop_caches命令查看。
free -m 相对于top 提供了更简洁的查看系统内存使用情况
free -9 突然终止运行的进程会导致系统资源无法释放,此时需使用free命令回收内存
kill -pid kill -signal pid,杀掉进程,pid是进程号,signal:1重跑(重启进程(以使配置生效等)),9强行终止进程,15结束
ps -ef|grep tomcat 标准格式显示含有tomcat的进程 -e:显示所有进程 -f:全格式
ps -eO lstart | grep tomcat 查看进程详细的启动时间
echo $PATH 查看系统环境变量(注意大小写)
alias 查看别名
alias vi='vim' 设置别名,等号前后不要有空格
vi /root/.bashrc 让别名永久生效,修改配置文件即可
unalias 别名 删除别名
echo 1 > /proc/sys/vm/drop_caches 清除内存
history 查看历史命令记录-c:删除历史命令记录 -w:把缓存中的历史命令写入历史命令保存文件~/.bash_history,正常情况下要等用户退出后才会把历史命令写入文件中
cat ~/.bash_history 查看历史命令保存文件 默认保存1000条历史记录
使用上下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令(history命令会列出历史命令,n可在列表中查看得到)
使用“!!”重复执行上一条历史命令
使用“!字符串”重复执行最后一条以该字符串开头的命令