1. 编译及链接生成可执行文件示例
gcc -c -I /usr/local/include/ http_test.cpp-o http_test.o
gcc -L /usr/local/lib-lboost_locale http_test.o -o test
2. 查找
当前目录下内容包含某个字段的文件,并显示文件目录:
find . -name “*.h” -exec grep -in-H “string ” {} \;
查找当前目录下文件名包含某字符串的
$ find . -print | grep -in string //note:字符串不要用通配符
查找指定目录下所有文件的MD5
$ find . -exec md5sum {} + | awk'{print $2 "\t" $1}' | sort > md5.txt
grep -Ein 'a|b' console.log
3. 解压
链接: http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html
带路径压缩属性:
$tar -czvf /***/WEB-INF/lib.bak.tar.gz /***/WEB-INF/lib --absolute-names
解压到特定路径属性:
`tar -xvzf #{propel_home}/../idm-service-#{idm_version}.tar.gz-C#{propel_home}/../idm-service/`
4. 批量替换
\/为/的转义
sed -i "s/\/home\/artogrid\/workspace\/dev/..\/../g" `grep\/home\/artogrid\/workspace\/dev-rl ./ */*.sh`
sed -i "s/tcp:\/\/192.168.1.102/tcp:\/\/172.16.8.40/g" `greptcp:\/\/192.168.1.102 -rl ./*/*.xml`
sed -i "s/idb_cswap_account/idb_account/g"`grep idb_cswap_account -rl ./sumscope/cswap/*/bin/*ServerCfg.xml`
xml 特殊字符替换:
替换<CompanyId>1为<CompanyId>9000
sed -i"s~<CompanyId>1~<CompanyId>9000~g" `grep "<CompanyId>1" -rl ./sumscope/cswap/CManageServer/bin/CManageServerCfg.xml`
[root@propel ~]# sed -i "s~idm.persistence.show_sql = false~idm.persistence.show_sql = true~g" `grep "idm.persistence.show_sql = false" -rl /opt/hp/propel/idm-service/idm-service.war/WEB-INF/spring/applicationContext.properties`
grep l 只列出文件名
5.设置生成的core dump 文件大小无限制
ulimit -c unlimited
6. cp -rf a b/ 仍然有覆盖提示,可查看别名
[root@localhost workspace]# alias
alias cp='cp -i'
........
如果存在cp别名,可临时取消
[root@localhost workspace]# unalias cp
然后再执行cp -rf a b/ ,即可没有提示。
shell 脚本:
[ -n "`alias -p | grep '^alias cp='`" ] && unalias cp
cp -Rf folder1 folder2
alias cp='cp -i'
7. 查找进程运行路径
方法一:
a. ps查找进程号
b. 查看/proc/pid_no
eg:
[root@localhost /]# ps -elf | grep -in "qpid"
244:1 S root 3569 1 0 80 0 - 182221 ep_pol Oct26 ? 00:37:58 ./qpidd --max-connections=2000 --auth=no --tcp-nodelay -d --log-source yes --log-thread yes --log-to-file qpidd.log
261:0 S root 20236 20192 0 80 0 - 25829 - 18:12 pts/6 00:00:00 grep -in qpid
[root@localhost /]# ll /proc/3569
总用量 0
......
-r-------- 1 root root 0 12月 10 13:43 environ
lrwxrwxrwx 1 root root 0 12月 10 13:43 exe -> /home/artogrid/workspace/deploy/qpid/qpidd
......
方法二:top命令 + c
8. 修改用户组及权限
[root@IDBCentos65 bondserver]# ll
-rwxr-xr-x. 1 root root 143 Dec 24 16:54 modify_cfg.sh
[root@IDBCentos65 bondserver]# chown centos:centos modify_cfg.sh
-rwxr-xr-x. 1 centos centos 143 Dec 24 16:54 modify_cfg.sh
[root@IDBCentos65 bondserver]# chmod g+w modify_cfg.sh //or chmod 777 file
-rwxrwxr-x. 1 centos centos 143 Dec 24 16:54 modify_cfg.sh
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
修改目录及子目录用户组
root@ubuntu:/workspace# chown -R stack:stack devstack/
为用户添加sudo权限
#echo"user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
path: /etc/sudoers.d
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD:ALL NOPASSWD 不需要密码
创建多级目录:
mkdir -p a/b/c
9. 查看服务
#service --status-all
#systemctl status
10. yum
a. 查看已安装应用
#yum list installed
b.删除
#yum remove mysql
c.查找可安装包
#yum search jdk
refer to: http://blog.chinaunix.net/uid-346158-id-2131252.html
d.yum server所使用的容器
yum repolist all
e. 删除已下载过的所有容器的相关信息
#yum clean all
11. 日期时间修改及同步
修改:date
# date -s "2008-08-08 12:00:00"
修改完后,记得输入:clock -w
把系统时间写入CMOS
同步:#ntpdate 202.120.2.101
12. 代理设置
/etc/profile 加入
export http_proxy=http://***.com:8080
export https_proxy=http://***.com:8080
13. 查看http response
curl -v "http address"
14.Vim 行号永久生效
/etc/vimrc or ~/.vimrc 加入"set number"
15.安全
SELinux增强安全,关闭的办法为:
1. 永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
2. 即时生效
setenforce 0
关闭防火墙的方法为:
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
查看状态:sestatus
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
16.硬盘空间查看
[tiaxia@c9t21622 ftp]$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 999320 481052 465840 51% /
.......
ps: df -h (human-readable)
[tiaxia@c9t21622 ftp]$ du -h
4.0K ./pub
4.0K ./propel
12K .
[tiaxia@c9t21622 ftp]$ du -ck
4 ./pub
4 ./propel
12 .
12 total
查看目录所占用的size
[root@c9t21622 var]# du -sh *
4.0K account
100M cache
1.1M chef
40K crash
4.0K cvs
[root@c9t21622 var]#du -sh
1.3G
17. 切换到root
#sudo -s
#sudo su
18. SSH到Linux服务器通过publish key
linux客户端生成private/publish key命令 # ssh-keygen
拷贝pub key内容到服务端/.ssh/authorized_keys文件 (.ssh 700)(authorized_keys 644)
或命令 ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
(authorized_keys可添加多个client public key)
ssh server-ip
服务器端的公私钥pos: /etc/ssh/ssh_host*,删除,重启[/etc/init.d/sshd restart]即可重新生成服务端公私钥,
但可能会对其他客户端造成影响,其他客户端存储的server信息在~/.ssh/known_hosts
19. 查看系统信息
发行版本
$ uname -a
$ cat /etc/redhat-release
$cat /etc/issue
$cat /proc/version
CPU信息
$cat /proc/cpuinfo
查看系统负荷
[root@propel proc]# uptime
03:39:21 up 6 days, 21:36, 5 users, load average: 0.01, 0.11, 0.13
"load average"一共返回三个平均值----1分钟系统负荷、5分钟系统负荷,15分钟系统负荷
20. 查看域名
hostname
cat /etc/sysconfig/network
cat /etc/hosts
修改Linux主机名
hostname ceshi.com
21. 查看端口对应的进程
$ lsof -Pnl +M -i4 | grep 5671
22.shell进入当前脚本路径
cd `dirname $0`
echo "pwd: "`pwd`
23. ln
在docker目录下创建tx的软连接
ln -s /opt/mount1/tx docker
lrwxrwxrwx 1 tiaxia ldap 14 Jan 24 06:06 tx-> /opt/mount1/tx
24. 查看cpu核数
cat /proc/cpuinfo |grep "cores"|uniq
25. network
设置静态ip
路径: /etc/sysconfig/network-scripts/***
重启服务:/etc/init.d/network restart
Sample
[root@prop-idm network-scripts]# cat ifcfg-enp1s0f0
TYPE=Ethernet
BOOTPROTO=dhcp
DHCP_HOSTNAME="prop-idm.asiapacific.cpqcorp.net"
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp1s0f0
UUID=1222c7d9-3b41-4420-8488-92ba1fedf6ad
DEVICE=enp1s0f0
ONBOOT=yes
[root@prop-idm network-scripts]# pwd
/etc/sysconfig/network-scripts
26. alias 添加位置
单个用户生效: 家目录 /home/**/.bashrc
所有用户生效: /etc/bashrc
27 复制连续多行到另一文件
方法一: [root@prop-idm temp]# sed -n '1,11p' dum.sql > b.test
方法二:[root@prop-idm temp]# head -n 12 dum.sql > a.test
方法三:在Vim中操作
1)把本文件的5~10行复制到“filename”文件的后面:
:5,10 w>> filename
2)把本文件的5~10行复制到“filename”中,清除“filename”原文件的内容:
:5,10 w! filename