天天看点

suse linux服务器的常用命令

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