一、linux shell 命令
command -option opt:加符号`,opt可以为其他命令的输出,如top -p `pgrep python | tr "\n" "," | sed 's/,$//'`
killall:通过进程名向进程发送信号,默认发送15号sigterm,通知进程正常退出(进程处于uninterruptible sleep时,进程表的信号域被置位,但进程无法处理sigterm信号,通常进行IO,不可被打断,保证内核态例程的执行)
守护进程重启:killall -s HUP 进程。对于不与终端交互的守护进程,通常的设计是在接收到SIGHUP信号之后就会重新读取配置文件。
进程关闭:killall 进程名(<-->kill 进程号),缺省产生15) SIGTERM 程序结束(terminate)信号,可以被阻塞和
处理,通常用来要求程序自己正常退出。;若无法关闭,killall -9强制关闭,9号信号SIGKILL无法被忽略
ctrl-c 是发送 2号信号 SIGINT,终止一个前台进程
ctrl-z 是发送19号信号 SIGSTOP,挂起一个进程
ctrl-d 向终端输入EOF字符
kill -l:显示所有Linux下支持的信号及其编号。早期UNIX系统只定义了32种信号,Linux 3.x支持64种信号,编号0-63(SIGRTMIN=31,SIGRTMAX=63),将来可能进 一步增加,这需要得到内核的支持。
SIGHUP,hang up signal, sent to a process when its controlling terminal is closed,会在以下3种情况下被发送给相应的进程:
1.终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)
2.session首进程退出时,该信号被发送到该session中的前台进程组中的每一个进程
3.若父进程退出导致进程组成为孤儿进程组,且该进程组中有进程处于停止状态(收到SIGSTOP或SIGTSTP信号),该信号会被发送到该进程组中的每一个进程。
nohup启动的进程不会收到sighup信号。可用于&放到后台执行的进程,shell 中,$! is the PID of the last backgrounded process. $$ is the PID of the current shell.
查找:
which '命令':在$PATH设置的路径下(即执行shell的路径)查找'命令'的二进制文件
whereis '命令':在可能安装软件的路径下查找'命令',即查找'命令'的安装目录(包括配置文件)。在Makefile中没有自动卸载的设置时,手动卸载软件用
定时执行脚本:crontab -e
vim 十六机制显示文本:':%!xxd'
:!command 执行shell命令command
?text:向上查找text,n向上查找,N向下查找 <-->/text:向下查找text,n向下查找,N向上查找
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
:split file或:new file 用新窗口打开文件
Ctrl+ww 切换到下一个窗口
:%s/string1/string2/g:将所有的string1替换为string2
查看信息:
free -h:查看内存使用
df -h:查看磁盘空间
tail -f /var/log/message:系统信息
ulimit -a:显示系统中所有的资源限制
更改进程所能打开的最大文件数 /etc/security/limits.conf添加
* soft nofile 65535
* hard nofile 65535
<-->ulimit -n只能更改当前的shell,不能更改系统的
top -p 进程号 :指定进程的top信息。NI(nice),PR(priority):内核通过所有进程的nice计算出各个进程的pr,可以通过改变ni的值,使pr改变
多于多进程:top -p `pgrep redis-server | tr "\n" "," | sed 's/,$//'`
ps -eLf|grep 'name':获取线程信息
pstree 进程号 -p(在进程名后显示进程号):进程树
uptime 系统平均负载
w:系统负载,每个用户占用CPU情况
cat /proc/cpuinfo:cpu型号
cat /proc/version:内核信息
文件管理:
chown user:group file 或 dir -R 改变所有者和组
chmod 124 file 或dir -R :改变权限。数值=rwx(r为4,w为2,x为1),三个数字对应user,group,other的权限
man+分卷号+命令:默认从1号手册中查找
分卷号1:用户命令, 可由任何人启动的
分卷号2 :系统调用, 即由内核提供的函数
分卷号3: 例程, 即库函数,比如标准C库libc
二、Linux 环境变量
Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。
1.常见的环境变量:
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
PS1 基本提示符,对于root用户是#,对于普通用户是$
PS2 附属提示符,默认是“>”
2. 环境变量的设置(以PATH为例):
"PATH=$PATH:路径"的形式可以把路径加入到当前环境变量中.$PATH”表示原先设定的路径 仍然有效,添加多个环境变量用冒号隔开.修改后,可以用echo命令显示当前环境变量值
1)export命令:
export命令将作为他参数的变量导入到子shell中,并使之在子shell中有效,shell关闭年这个命令就失效了
2)修改/etc/profile和~/.bash_profile文件:
对环境变量的设置永久生效./etc/profile对系统里所有用户都有效,~/.bash_profile只对该用户有效.修改后,在下次重新进入此用户时生效或运行source命令立即生效
3)readonly命令:
readonly命令设置只读变量,使用了readonly命令,变量就不可以被修改或清除了
4)unset命令:清除环境变量
三、【转载】systemctl命令的用法
任务 | 旧指令 | 新指令 |
使某服务自动启动 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active) |
显示所有已启动的服务 | chkconfig --list | systemctl list-units --type=service |
启动某服务 | service httpd start | systemctl start httpd.service |
停止某服务 | service httpd stop | systemctl stop httpd.service |
重启某服务 | service httpd restart | systemctl restart httpd.service |
四、dd命令与cp的区别
dd命令是对磁盘的操作,拷贝的是原始数据,可以控制数据在磁盘上的位置。cp命令是对文件系统(中inode节点)的操作,拷贝的是文件,而最终文件中的数据在磁盘上分布有文件系统决定。所以,对于不能以文件或目录格式呈现的数据(如缓冲块中的数据),只能用dd。
五、fedora 19 静态ip设置--修改配置文件
fedora 19较之前版本的ip配置文件差别较大,故将成功配置静态ip的过程作记录:
修改 /etc/sysconfig/network-scripts/ifcfg-enp3s0相应项:
BOOTPROTO=none
IPADDR0=ip地址
PREFIX0=子网掩码前缀长度
GATEWAY0=网关地址
重起网卡:service network restart
六、安装软件
在编译安装时常常遇到缺少依赖软件的开发包,这些开发包包含了编译所需的头文件和库,文件名中包含'-devel',安装方法:
1.yum install '文件名*':安装'文件名'所包含的所有相关的文件。若需要安装的只有两个,则直接安装。缺点:安装的是rpm包,无法指定安装路径。若安装后编译时仍无法找到路径,通过rpm -ql查询安装位置,加入编译安装的参数中。
2.源码编译安装:设置prefix=/usr,是其他文件编译时默认的查找路径
七、关闭ipv6:
$ sudo vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
重启网络