ps查看进程
ps -ef 查看所有进程
ps -ef | grep java 查看Java进程
ls查看文件列表
ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法
ls [-alrtAFRh] [name…]
参数 :
- -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出,“ls -l"可以缩写为"ll”。
- -r 将文件以相反次序显示(原定依英文字母次序)
- -t 将文件依建立时间之先后次序列出
- -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
- -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
- -R 若目录下有文件,则以下之文件亦皆依序列出
- -h 单词human-readable,人性化阅读,文件大小转为K/M/G的形式显示
注:”ls - l” 可以直接缩写为”ll”
解压tar.gz文件
tar -zxvf 文件 解压缩文件到当前的目录。
tar -zxvf 文件 _C 目标目录 解压缩文件到目标目录。
压缩:
tar -zcvf /home/xahot.tar.gz /xahot
tar -zcvf 打包后生成的文件名全路径 要打包的目录
tar -czf dist.tar.gz dist/
打tar包:
tar cvf FileName.tar DirName
编辑文件
①进入文件:vi 文件
②切换成insert模式:i
③编辑文件
shift+g : 跳到文件末尾
④退出insert模式:“Esc”
⑤退出文件::wq!(退出并保存) :q!(退出不保存)
find在指定目录及其子目录下查找文件
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
如果不设置path则在当前目录及其子目录下查找文件。并且将查找到的子目录和文件全部进行显示。
eg:
find . -name "*.c"将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find . -type f将目前目录其其下子目录中所有一般文件列出
find . -ctime -20将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find / -type f -size 0 -exec ls -l {} \;列出系统中所有文件长度为0的普通文件的完整路径
find / -name mysql列出系统中名为”mysql”的文件
精确查询:find ./ -name 010230770144308_20180817.avi //可以不带引号
模糊查询:find -name ‘01023*’ //必须带引号
查看文件内容(监听)
tail -500f catalina.out 动态查看最新的500行
sed
cat cfg.properties
more
less
grep
sed命令
根据日期范围查询。
sed -n '/2021-12-15 23:59:13/,/2021-12-15 23:59:22/p' /log/normal/normal.2021-12-15.log
上面的两个日期必须是日志中打印出来的日志,否则无效
cat命令及相关快捷键
—>cat -n cfg.properties
cat命令:一次显示整个文件,-n 看行号信息
退出查看:Ctrl + C
—>cat -n cfg.properties | less
以less模式来查看,可以上下键和pageUp键pageDown键翻页
退出查看:q
more命令及相关快捷键
more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
less命令及相关快捷键
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
参数说明:
-
+行号(不能有空格)
:表示从指定行开始显示 eg.从56274行开始显示::less +56274 common-all.log.9
-
-i
:忽略搜索时的大小写 -
-N
:显示每行的行号 -
-m
:显示当前页占全部的百分比 -
-r
:即--raw-control-chars
,显示有颜色的字体 -
-o
:<文件名> 将less 输出的内容在指定文件中保存起来 -
-h
:显示 less 的帮助文档 -
/字符串
:向下搜索"字符串"的功能 -
?字符串
:向上搜索"字符串"的功能 -
n
:重复前一个搜索(与 / 或 ? 有关) -
N
:反向重复前一个搜索(与 / 或 ? 有关) -
G
:跳到底部 -
g
:跳到顶部 -
\[pagedown\]
:向下翻动一页 -
\[pageup\]
:向上翻动一页 -
v
: 使用配置的编辑器编辑当前文件 -
m
: 标记文本的当前位置(需要输入一个英文字母) -
'
: 导航到某个标记处(需要输入对应英文字母标记) -
Q 或 :q
: 退出less 命令
less中查找多个关键字
?springframework|quartz 注意不要有空格。
使用less浏览多个文件
less file1 file2
当打开多个文件时,使用如下命令在多个文件之间切换
:n
- 浏览下一个文件
:p
- 浏览前一个文件
grep命令
ps查看进程信息并通过less分页显示
ps -ef | grep java | grep -v 'grep'
查询所有java进程
ps aux | grep /app/tomcat/apache-tomcat-8.5.8 | grep -v 'grep'
查询指定目录下tomcat的进程
ps -ef |less
grep查找一个文件中单个或多个字符串(关键字)
先进入该目录,再使用命令:
grep -rn “hello,world!” *
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示关键字在文件中的行号
-i 忽略大小写
-E 选项为正则表达式,"|“表示OR,”.*"表示AND。当然也可以使用多个以管道符切割的grep 命令,表示AND。egrep = grep -E
-v 排除
-A 10 显示匹配行和它后面的n行
-B 10 显示匹配行和它前面的n行
-C 10 显示匹配行和它前后各n行
# 找出test.log中包含login信息的,且没有deviceType这个字段的
cat test.log | grep "login"|grep -v "deviceType"
grep命令查找特殊符号时,需要进行转移处理。
- 查找 \: grep ‘\\’ xx.log
- 查找 $: grep ‘$’ xx.log
- 查找 ‘: grep "’" xx.log
- 查找 “: grep '”’ xx.log
- 查找 |: grep ‘|’ xx.log
- 查找Tab: grep $‘\t’ xx.log
- 查找空格: grep ‘\空格’ xx.log
- 查找[xx]: grep ‘[xx]’ xx.log
- 1.单个
cat /tmp/php.log | grep "成功"
所有的成功都会被查询出来。
- 2.多个,并列查询
cat /tmp/php.log | grep -E "推荐.*成功"
只筛选出推荐成功的记录。
或者直接
cat /tmp/php.log | grep "推荐" | grep "成功"
,不过只会高亮"成功",也不方便添加-A
等其它参数,所以不推荐使用。
- 3.或,查询
cat /tmp/php.log | egrep "成功|推荐"
包含"成功"或者"推荐"的都查询出来。
grep查找目录下多个文件中单个或多个字符串(关键字)
- 在当前目录及子孙目录中,查找后缀为".txt"的文件中包含"177d"或"a8b3adf4103"的内容,并显示行号:
grep -rnE --include=".txt" “177d|a8b3adf4103” ./
rm
1、删除文件夹以及文件夹中的所有文件命令:
rm -rf 目录名字
其中:
-r:向下递归删除
-f:直接强行删除,且没有任何提示
2、删除文件命令
rm -f 文件名
将会强行删除文件,且无提示
rm -rf /home/logs/* 删除指定文件夹下的所有文件
/data/attachments/
/data/attachments/
注意:
使用rm -rf要格外注意,linux中没有回收站,慎重删除
/home/wwwroot/hxzf/backup/20150427/sp2p/WEB-INF/application/conf/
定时任务调度
查看定时任务: crontab -l
编辑: crontab -u root -e
vi /etc/crontab
service crond restart
查看磁盘空间、查找大文件
df -h
:df = disk free,显示磁盘分区上可以使用的磁盘空间
du -h
:du = disk usage,查看当前目录下所有文件/目录使用的磁盘空间。递归显示所有。
du -sh *
:查看当前目录下各个子文件/目录使用的磁盘空间。
du -sh
:查看当前目录总共使用的磁盘空间。
查找大文件的方法一
第1步:使用df -h
查看磁盘空间使用情况,发现是 /dev/mapper/vg-root 使用了100%,且对应的是根目录 /。
第2步:使用cd /
进入根目录,再使用du -sh *
查看每个子文件/目录使用的磁盘空间,发现是sftpdata目录占用了很大空间
第3步:再使用cd sftpdata
进入sftpdata目录,使用du -sh *
查看每个子文件/目录使用的磁盘空间,以此类推,直至找到可以删除的大文件/目录。
查找大文件的方法二
find / -size +500M; 查找出大于500M的文件
查看某目录下占用空间最多的文件或目录。取前10个。需要先进入该目录下。
du -cks * | sort -rn | head -n 10
查看当前目录写占用情况
du -h --max-depth=1
查看内存
free -m
查看内存使用情况
top
2.清理缓存
echo 1 > /proc/sys/vm/drop_caches
文件操作句柄:
=======================
lsof -p 18451
查看当前路径:
pwd
查看服务器系统时间并写入BIOS:
查看:date
修改:
#date -s 07/26/2009 设定成2009年7月26日
#date -s 17:55:00设定成下午17点55分0秒
#date -s “2008-08-08 12:00:00”
注意:这里说的是系统时间,是linux由操作系统维护的。在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行命令:clock -w,把系统时间写入CMOS
切换到root权限:
参考https://www.cnblogs.com/amyzhu/p/8526074.html
sudo -s
su - root 切换到root权限
后台运行程序:
加“&”
Linux:
cd /usr 从子文件夹进入上级文件夹usr
cd local 从父到子
mv -f WEB-INF.tar.gz /home/wwwroot/test1/backup/jtb20171112/(先创建文件夹)
mv /app/application/DR2/DR /app/application/ 移动文件夹DR整体到application目录下
vi usr/local/redis/redis.conf 编辑redis.conf 文件
:wq 保存修改,并退出
q! 强制退出(不保存改动)
Redis:
src/redis-server
Redis-server /usr…/redis.conf 启动redis服务,并指定配置文件
Redis-cli 启动redis 客户端
Pkill redis-server 关闭redis服务
Redis-cli shutdown 关闭redis客户端
Netstat -tunpl|grep 6379 查看redis 默认端口号6379占用情况
开放端口(防火墙服务):
#查看端口开放信息
service iptables status
#关闭防火墙
service iptables stop
vi /etc/sysconfig/iptables
#在文件中添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
#重启防火墙(网卡服务)
service iptables restart
注意:请使用root权限操作 sudo su
阿里云防火墙:
1、firewalld的基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
查看端口占用情况:
netstat -ntlp
netstat -nat |grep “:80” (windows系统:netstat -nao | findstr “:80”)
netstat -anp
查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name
阿里云服务器查看端口:
netstat -tunpl
rpm -qa |grep httpd
rpm -ql httpd
openssl req -new -days 3650 -key /home/huahui/hhcf.lient.key -out /home/huahui/hhcf.lient.csr -config /etc/pki/tls/openssl.cnf
httpd 重启:
任意目录执行 apachectl -k restart
安装mysql客户端:
yum install mysql
连接mysql命令:mysql -h localhost -u root -p123
nginx安装(需要先安装依赖运行库):
yum install nginx -y
查找nginx可执行文件的路径
ps -ef | grep nginx
linux重启
reboot
windows 长ping
ping ip -t
ping sl.ciitc.com.cn 正在Ping sl.ciitc.com.cn [113.108.88.189] 具有 32 字节的数据:…
ls -a 查看隐藏文件
http://47.97.173.95/
SSH修改端口:
vim /etc/ssh/sshd_config
service sshd restart
netstat -an|grep 22022
查看服务器访问外网的IP
(注:很多服务器提供商的服务器访问外网的IP和你连服务器的IP是不一致的)
curl http://
–>在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具
查看操作系统的版本
centos系统 cat /etc/centos-release
RedHat系统 cat /etc/redhat-release
查看系统位数:
file /sbin/init
查看网络配置信息
ifconfig
输出如下信息:
eth0 Link encap:Ethernet HWaddr 00:XX:XX:XX:XX:XX
inet addr:10.1.3.101 Bcast:10.1.3.255 Mask:255.255.255.0
……
eth1 Link encap:Ethernet HWaddr 00:XX:XX:XX:XX:XX
inet addr:10.1.2.101 Bcast:10.1.2.255 Mask:255.255.255.0
………
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
…….
说明当前有三个网卡:eth0,eth1,lo;其中lo的ip是127.0.0.1,是用于测试的虚拟接口.
如果要对每个网卡查看更详细的信息就需要分别查看其配置文件
对eth0
执行less /etc/sysconfig/network-scripts/ifcfg-eth0
查看cpu的信息
cat /proc/cpuinfo | grep "model name" && cat /proc/cpuinfo | grep "physical id"
其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU
可以看到上面,这台机器有两个双核的CPU,ID分别是0和3,大小是2.8G。
查看CPU使用率
top -bn 1 -i -c 在第三行有显示CPU当前的使用情况。
[root@li676-235 ~]# top -bn 1 -i -c
top - 14:19:51 up 138 days, 7:15, 1 user, load average: 0.20, 0.33, 0.39Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombieCpu(s): 4.5%us, 3.8%sy, 0.0%ni, 91.0%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1014660k total, 880512k used, 134148k free, 264904k buffersSwap: 262140k total, 34788k used, 227352k free, 217144k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12760 root 20 0 15084 1944 1632 R 2.0 0.2 0:00.01 top -bn 1 -i -c
如上所示,top命令可以看到总体的系统运行状态和cpu的使用率 。
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序。
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
最占cpu的进程获取
# yum install dstat
[root@li676-235 ~]# dstat --top-cpu
-most-expensive-
cpu process
-------------------
mysqld 1.5
php-fpm: pool 24
mysqld 59
查看服务器总内存信息
cat /proc/meminfo | grep MemTotal
查看硬盘大小
fdisk -l | grep Disk
查看文件安装目录
whereis mysql
查看安装后运行文件所在路径(验证安装是否成功)
which cronolog
正常情况下显示:/usr/local/sbin/cronolog
查看所有监听端口
netstat -lntp
查看所有已经建立的连接
netstat-antp
查看所有进程
ps-ef
在线下载
wget http://apache.mirror.phpchina.com/apr/apr-1.3.2.tar.gz
测试远程某一个ip的端口是否开放
telnet 47.106.22.159 8080
[root@pengman Desktop]# telnet 10.223.30.128 7027
Tring 10.223.30.128.7027
Connected to 10.223.30.128 (10.223.30.128) // 表示已经成功连接
Escape character is ‘^]’ // 不是报错,说明你telnet 的端口是正常监听的,"]"中的 表示 ctrl键,表示此时 同时按 Ctrl 和 ]两个键进入telnet客户端的命令模式
Connection closed by foreign host. //长时间没有其他命令数据输入,linux自动关闭相应的连接
服务器内复制文件
cp是copy的缩写,功能是复制文件或目录到目的文件或目录。其有多个参数
语法
cp [options] source dest
或
cp [options] source… directory
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-b:如果目录文件存在,则生成备份。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
实例
使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newtest"下,输入如下命令:
$ cp –r test/ newtest
$ cp –r test/aaa.png /app/applicaiton/newtest
注意:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
跨服务器复制文件
1.命令格式:
scp[参数][原路径][目标路径]
2.命令功能:
scp是securecopy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
3.命令参数:
-1强制scp命令使用协议ssh1
-2强制scp命令使用协议ssh2
-4强制scp命令只使用IPv4寻址
-6强制scp命令只使用IPv6寻址
-B使用批处理模式(传输过程中不询问传输口令或短语)
-C允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p保留原文件的修改时间,访问时间和访问权限。
-q不显示传输进度条。
-r递归复制整个目录。
-v详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-ccipher以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-Fssh_config指定一个替代的ssh配置文件,此参数直接传递给ssh。
-iidentity_file从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-llimit限定用户所能使用的带宽,以Kbit/s为单位。
-ossh_option如果习惯于使用ssh_config(5)中的参数传递方式,
-Pport注意是大写的P,port是指定数据传输用到的端口号
-Sprogram指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
4.使用实例:
scp命令的实际应用概述:
从本地服务器复制到远程服务器:
(1)复制文件:
命令格式:
scplocal_fileremote_username@remote_ip:remote_folder
或者
scplocal_fileremote_username@remote_ip:remote_file
或者
scplocal_fileremote_ip:remote_folder
或者
scplocal_fileremote_ip:remote_file
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
(2)复制目录:
命令格式:
scp-rlocal_folderremote_username@remote_ip:remote_folder
或者
scp-rlocal_folderremote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
eg:
scp -r root@43.224.34.73:/home/lk /root
scp -r /mwbase/IM_ATTACH_FILE_DB/vod/10BS/2018/08/18 gelcmw@10.163.90.91:/mwbase/IM_ATTACH_FILE_DB/vod/10BS/2018/08/18/
–>如报错no such file or directory,请确保路径无误,最好是tab键提示出来的。
jps 命令使用
jps(Java Virtual Machine Process Status Tool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程以及进程id。 jps 也是一样,它的作用是显示当前系统的java进程情况及进程id。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),并可通过opt来查看这些进程的详细启动参数。
使用方法:在当前命令行下打jps(jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path) 。
$> jps
23991 Jps
23651 Resin
比较常用的参数:
-q 只显示pid,不显示class名称,jar文件名和传递给main方法的参数
$> jps -q
28680
23789
23651
-m 输出传递给main方法的参数,在嵌入式jvm上可能是null
$> jps -m
28715 Jps -m
23789 BossMain
23651 Resin -socketwait 32768 -stdout /resin/log/stdout.log -stderr /resin/log/stderr.log
-l 输出应用程序main class的完整package名或者应用程序的jar文件完整路径名
$> jps -l
28729 sun.tools.jps.Jps
23789 com.asiainfo.aimc.bossbi.BossMain
23651 com.caucho.server.resin.Resin
-v 输出传递给JVM的参数
$> jps -v
23789 BossMain
28802 Jps -Denv.class.path=/data/aoxj/bossbi/twsecurity/java/trustwork140.jar:/data/aoxj/bossbi/twsecurity/java/:/data/aoxj/bossbi/twsecurity/java/twcmcc.jar:/data/aoxj/jdk15/lib/rt.jar:/data/aoxj/jdk15/lib/tools.jar -Dapplication.home=/data/aoxj/jdk15 -Xms8m
23651 Resin -Xss1m -Dresin.home=/data/aoxj/resin -Dserver.root=/data/aoxj/resin -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl
上传/下载文件
rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。
优点就是不用再开一个sftp工具登录上去上传下载文件。
sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
安装该工具的命令:
yum install lrzsz
从服务端发送文件到客户端:
sz filename
从客户端上传文件到服务端:
rz
在弹出的框中选择文件,上传文件的用户和组是当前登录的用户
SecureCRT设置默认路径:
Options -> Session Options -> Terminal -> Xmodem/Zmodem ->Directories
Xshell设置默认路径:
右键会话 -> 属性 -> ZMODEM -> 接收文件夹
查看主机名称、ip
hostname
命令用于显示和设置系统的主机名称。环境变量HOSTNAME
也保存了当前的主机名。在使用hostname
命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。
如果需要永久修改主机名,对于红帽七系列,只需修改/etc/hostname
文件。其它系列可能需要同时修改/etc/hosts
和/etc/sysconfig/network
的相关内容,可以使用hostnamectl
命令。
用uname -n
也可以查看主机的hostname
值
[gelcmw@D2-SHUANGLUSIT91 ~]$ hostname
D2-SHUANGLUSIT91
[gelcmw@D2-SHUANGLUSIT91 ~]$ uname -n
D2-SHUANGLUSIT91
[gelcmw@D2-SHUANGLUSIT91 ~]$ hostname -i
10.163.10.91
/etc/hosts文件修改
修改/etc/hosts
之后正常情况应该是保存之后立即生效的,但是有时不是。使用uname -a
可以查看hostname
是多少,就可以知道是否修改生效了。如果没有
这时的策略有:
1) 重启机器
2) 重启服务
Ubuntu:$sudo/etc/init.d/networking restart
Gentoo:/etc/init.d/net.eth0 restart
3)使用hostname命令
hostname 定义的主机名