suse linux服务器的常用命令
1,让进程gate_way在后台运行:
nohup ./gate_way &
2,查看某一进程的ID:
ps -ef | grep gate_way
3,杀死某一进程, 2205就是我们正在运行的gate_way的ID号,现在我们结束该进程:
3, 实时查看我们的日志文件:这里,用head-显示文件头,用tail-显示文件尾
tail -f proxy_server.log
4, 添加删除用户:
添加用户: useradd -m username
添加密码: passwd psd
删除用户: userdel -r username
5, 查找文件:
find -name test.sh
6, 判断某个可执行文件的binary档案含什么动态库:
7,使shell读入指定文件并依次执行所有语句:source命令
source .bashrc
8,显示当前各种用户限制:ulimit -a
9,查看linux进程的内存占用:top
根据内存占用排序: shift+m
2015-02-03更新以下内容:
1,关闭防火墙(重启失效):/sbin/SuSEfirewall2 stop
查看防火墙状态:chkconfig --list | grep fire
2, 启动smb服务:service smb start
3,查找某个程序是否在运行 ps -ef | grep app
4, 释放cache资源: echo 1 > /proc/sys/vm/drop_caches
5, 创建文件夹:mkdir -p test
6,linux 下c头文件:/usr/include ; c++头文件:/usr/include/c++/4.3/
7,valgrind内存泄露检查:valgrind --log-file=1 --tool=memcheck ./a.out
valgrind --log-file=1 --leak-check=full --tool=memcheck ./app
8,查找文件:find -name xxx.xx
9, 显示当前各种用户限制:ulimit -n
10,Oracle关闭与启动:
a,导入环境,使sqlplus能运行起来: source oraenv.sh
b,以oracle账户执行:sqlplus sys/sys as sysdba
c,执行:shutdown abort //临时关闭数据库
关于启动:进入sqlplus后输入:startup。
若手动启动数据库后,发现监听进程没拉起来,手动执行如下命令:lsnrctl start 。查看状态:lsnrctl status。
11,编译并调试某个cpp测试文件:g++ -g -o test_memleak test_memleak.cpp
12,使用top观察内存泄露:top -p PIDnum,如top -p 22145
13,yast
14,查看哪个进程占用了某端口:lsof -i:端口号
15,关机:shutdown -h now
16,修改系统时间:date -s "20150115 09:47:00"
17, 移动:mv src dst
18,复制:cp src dst
19, linux下抓包:tcpdump host 172.16.0.186 and port 7805 -X -s 500 -w 11.pcap
20,查询oracle的session限制:
a,登录233的oracle账户
b,输入 sqlplus / as sysdba
c,在显示的SQL>处输入:show parameter session
d,然后就会有参数显示出来: 比如:sessions: 248
f,查看当前的session连接数:select count(*) from v$session
21,windows下跟踪路由:tracert 192.168.1.23
22,用windows的cmd进行oracle连接:
sqlplus username/[email protected]:1521/ora11g
cmd查询oralce数据,并带条件:
select * from tablename u where u.v_user_id = \'20141119095715000000000000034737\'
23,查找系统内占用空间比较大的文件:
du -sh /* du -sh /home/public/App/*
24, 查看磁盘占用情况:df
2015-03-30更新以下内容:
25,gdb调试,打印某个指针的某一些数据:p/x *data@len len-长度
26,telnet测试外网端口是否开放:telnet 192.168.1.233 8090
27,查看防火墙开放的端口:vi /etc/sysconfig/SuSEfirewall2 查找FW_SERVICES_EXT_TCP
28, 查看某程序8090端口是否在监听:lsof -i:8090
29, 创建用户:useradd -m public; passwd public
30,root下切换工作路径: su -
31,ftp字符界面的退出命令:bye - quit
32,关闭/打开防火墙:service iptables stop/restart
33,查看某程序占用的端口netstat -anp | grep vsp / lsof -i:5060
34, 查看内核/操作系统/cpu信息: uname -a
35, 查看计算机名称:hostname
36,编辑防火墙规则:vi /etc/sysconfig/iptables
37,启动MySQL/ftp/防火墙服务:service mysqld/vsftpd/iptables start
38,修改ssh端口号:
A, vi /etc/ssh/sshd_config
B, Port 22->xxx 这里可以先加一个Port xxx。成功后再关闭22端口。另外,需要在防火墙将xxx端口开放,并重启防火墙使生效
C, Service sshd restart
39,从桌面切换到文本模式:init 3 ,从文本模式切换到桌面:startx/init 5
40,nohup ./app >/dev/null 2>&1 &
解释如下:nohup xxx & 表示让xxx在后台执行
2>&1 是将标准出错重定向到标准输出。2是STDERR_FILENO,1是STDOUT_FILENO。
/dev/null - linux的黑洞,任何写入该文件的内容都会永远丢失。
即整体的意思是让程序后台执行,并将标准出错和标准输出都丢掉。
2015-11-24 更新以下内容:
41,Suse编辑防火墙开放端口:
A, vi /etc/sysconfig/SuSEfirewall2
B, FW_SERVICES_EXT_TCP="22 1521 "//端口编辑
C,rcSuSEfirewall2 restart
42,解压 tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
43,启动activemq:
cd apache-activemq-5.8.0/bin/
./activemq start
44 启动httpd
/etc/init.d/apache start
45, vi打开显示二进制文件:vi -b filename 进入后输入 :%!xxd
46-1 应用程序挂掉的调试方法:gdb gateway -c core : bt查看堆栈情况
调试运行中的程序方法:gdb app PID 或者gdb app-->然后 attach PID挂接该程序,detach取消挂接。
46-2 调试线程死锁:
1,gdb app PID
2, info thread - 显示所有的线程
3,p gMutexSendWatch - 打印线程锁状态,查看__owner = 6800,为占用该线程锁的线程ID(LWP),通过步骤2显示的线程ID,确认为哪个线程占用了该线程锁。
4, thread 25 - 跳到第25个线程
5,bt - 打印该线程下堆栈情况
6, f 1 - 跳转到该线程下的第一层
7,p xxx - 打印该线程下的xxx变量信息
7,通过上面的观察,确定实际发生线程死锁的位置以及状态信息
47,查看glibc版本:ldd --version
/lib/libc.so.6
/lib64/libc.so.6
strings /lib64/libc.so.6 |grep GLIBC_
48,看IO每一秒刷新一次: iostat -x 1/iotop -o/
49,查看Suse系统版本:
cat /etc/issue
cat /proc/version
lsb_release -a
50, 查找依赖项 objdump -T /lib64/libgcc_s.so.1 | grep GLIBC_2.14
51,列出所有被安装的rpm包:rpm -qa,并查找glibc匹配项:rpm -qa | grep glic
52, 远程拷贝文件: scp [email protected]:/home/public/Gateway/* ~/Gateway/
指定端口22:scp -P 22 [email protected]:/home/public/Gateway/* ~/Gateway/
53,linux,config文件中文显示乱码,导入中文语言:export LANG=zh_CN
54,alarmSvr编译时缺少 log4cpp的so文件:从/home/public/lib/liblog4cpp.* 拷贝到 /alarm_server/log4cpp/ 下,然后执行如下动作
ln -s -f liblog4cpp.so.5.0.6 liblog4cpp.so.5
ln -s -f liblog4cpp.so.5.0.6 liblog4cpp.so
55,查看程序运行时间:ps -A -opid,stime,etime,args | grep app
56,查看端口监听连接状态:netstat -an | grep 7275
57,linux平台vi增加行号显示:vi .vimrc 增加:set nu;取消行号显示:set nonu
58, linux远程连接数据库:sqlplus username/[email protected]:1521/ora11g
59, 查询某文件的某些协议:grep \'0x1202\' App.log | more
60,查看几颗cpu:cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
61,显示环境变量信息:1-语言:echo $LANG; 2-HOME路径:echo $HOME
显示所有的环境变量:env
62, 显示依赖库:ldd app
63,连续观察某一端口的连接情况,: netstat -anp -c | grep 7805
2016-9-28 更新以下内容:
64, cronab-定时执行任务:
1,public用户下,输入 crontab -e,打开定时任务编辑器
2,输入:00 01 * * * /home/public/GpsData/./cpGpsData.sh,此句就是在每天凌晨一点执行cpGpsData.sh脚本文件
3,保存该文件
4,查看定时任务:crontab -l
65,系统重启要执行的文件:vi /etc/init.d/rc.local
66,查看app(PID: 9685)进程的线程ID,以及各线程的cpu利用率: top -Hp 9685
Cpu:
us-用户模式下所花费CPU时间的百分比;sy:内核进程所花费的CPU时间百分比;
id-显示CPU处在空闲状态的时间百分比;wa:显示IO等待所占用的CPU时间百分比;
67,ulimit -v 修改永久生效方法:将ulimit -v unlimited 加入 /etc/profile文件中
68,修改文件用户所有者为public:users:chown public:users /etc/profile.d/xxx.sh
递归修改:chown -R public:users *
隐藏文件同样修改: chown -R public:users .*
69,nmon使用: nmon 123.nmon -s5 -c90000 -f -m /home/public/
说明:
-t 输出top processes的数据
-s 保存数据的频率 单位:秒
-c 次数
-f 生成的数据文件名中包含文件创建的时间
-m 生成的数据文件的存放目录
70,linux 查看系统线程总数: pstree -p | wc -l
71,rpm包安装:rpm -ivh xxx.rpm
列出rpm包的内容:rpm -qpl *.rpm
解压rpm包的内容:rpm2cpio *.rpm | cpio -div
72,zypper使用:
1,查看源: zypper repos
2,导入源:zypper ar http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/11.3/repo/oss/suse main
3,刷新: zypper refresh
4,查找软件:zypper search -s kernel-*-debuginfo*
5,安装: zypper install latencytop
6,删除源: zypper rr nonoss
73,列出CPU信息,包括L1 L2缓存等:lscpu
74, Oprofile的使用:
1, 执行app程序,运行压力:operf ./app
2,运行一段时间后,ctrl+c结束该程序
3,opreport -l >> 1.txt ,将函数级测试结果导入1.txt
4,opannotate -s >> 2.txt ,将代码级测试结果导入2.txt
75, Intel的linux程序性能调优工具启动vtune:使用XDMCP进入public,输入amplxe-gui
76,使用iftop观察网络IO:http://www.vpser.NET/manage/iftop.html
A,安装:zypper install iftop
B,观察:iftop 或 iftop -B
77,查看最近机器重启时间:last
78,查看上下文切换:vmstat 1
in-interrupt ; cs-context switch上下文切换
79,linux tcp优化:
1, vi /etc/sysctl.conf
2, 增加 net.ipv4.tcp_syn_retries = 2 (默认为5)
3,生效:sysctl -p /etc/sysctl.conf
4,查看: cat /proc/sys/net/ipv4/tcp_syn_retries
80,mysql程序编译命令:g++ -g -o test mysqlLinux.cpp -L/usr/lib64/mysql -lmysqlclient -lpthread -lm -lrt -ldl
-lm : libm.so :包含数学函数
-lrt:是glibc中对real-time部分的支持库
-ldl:显示调用动态链接库
81,查看后台tcp状态:netstat -n | awk \'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}\'
82,查看swappiness:cat /proc/sys/vm/swappiness
83,给后台运行的进程发送ctrl+c的SIGINT信号:kill -s 2 PID
2016年11月16日更新以下内容:
84,linux系统时间与网络同步:ntpdate pool.ntp.org
85,挂载windows共享文件夹Github到mnt目录: sudo mount -o username=admin,passwd=sdgakj //192.168.0.175/Github mnt/
86, Git操作,有文件变更之后:git add -p filename; git commit; git push;
87, 封停一个IP的访问: iptables -I INPUT -s 192.168.0.175 -j DROP
解封一个IP的访问: iptables -D INPUT -s 192.168.0.175 -j DROP
88,linux 使用tcpdrop工具强制断开某个ip的tcp连接,:
88.1 github下载 tcpdrop 地址: https://github.com/arut/linux-tcp-drop
88.2 make进行编译,生成 tcp_drop.ko
88.3 将tcp_drop.ko加载到内核: sudo inmode ./tcp_drop.ko
88.4 查询对应的tcp连接:netstat -n | grep ESTABLISHED | grep 9202
88,4 断开对应的连接: echo "192.168.0.228:9202 192.168.0.175:29414" > /proc/net/tcp_drop
88.5 从内核卸载模块: sudo rmmod tcp_drop
2017年3月27日更新以下内容:
89,vi 删除第5行到当前行:5,.d
90,查看当前系统允许打开的最大文件个数: cat /proc/sys/fs/file-max
91, vi 自动对齐: gg=G
92, 查看进程启动位置:
方法1 ls -l /proc/进程PID
方法2
lsof | grep 进程名称
93, 修改open file 1024的限制:
1. vi /etc/security/limits.conf
2. 末尾增加如下:
* soft nofile 131072
* hard nofile 131072
94, 清空历史记录: history -c
删除第二条history命令: history -d 2
95,看汇编指令:objdump a.out -dSsx > file
96,持续观察某一命令执行结果:watch -n 1 -d "netstat -anp | grep 8070"
97, 查看哪个IP地址连接最多,将其封了:
netstat -na|grep ESTABLISHED | awk \'{print $5}\' | awk -F: \'{print $1}\' | sort | uniq -c | sort -r +0n
98, 持续观察App的单线程CPU:
top -Hp $(ps -anp | grep app | awk \'{print $1}\')
99,记录app每分钟入库数:
cat Log/App.log | grep "Insert DB Size" | awk \'($18 == "Diff:") {print substr($4, 0, 5)}\' | uniq -c | awk \'{print $2 FS $1*10000 }\' > cc1.txt