‘壹’ linux命令里面的nohup命令和 & 是一个意思吗不挂断是什么意思
‘贰’ Linux后台进程
引入的原因: 用于控制向多个进程进行信号的分发,发给一个进程组是信号会发生给进程组中每一个进程
会话是一个或者多个进程组的集合,进程调用 setsid 函数建立一个会话。
进程调用setsid函数建立一个新的会话,会发生下面几件事
守护进程是生存期长的一种进程,没有控制终端。他们常常在系统引导装入时启动,系统关闭是终止。守护进程程序通常以字母 d 结尾。
用户层的守护进程的父进程是 init 进程。内核的守护进程并非init进程。
以 & 方式运行的为后台进程
比如: ping www..com &
通过 jobs 命令查看
将后台程序放到前台
通过 control+c 命名发送’hupinit‘信号kill掉进程
终端被挂断或者用户注销,SIGHUP信号会被发送到该终端相关的控制程序,而SIGHUP的默认行为是终止程序的运行。
需要实现终端退出后进程依然在后台运行,有两种途径
如果setid函数的进程就是一个进程组的组长,则函数会返回出错。为了解决这样情况,通常函数需要先fork,然后父进程退出,由子进程执行setsid。由于子进程继承的是父进程的进程组ID,而其PID是新分配的ID,因此这两者不可能相等,即子进程不可能是进程组的组长。 这种情况下,由于父进程先于子进程退出,因此子进程的父进程会有init进程接管。 而这就是sid命令的实现原理。
设置 setsid www..com
我们对比下和nohup
我们可以看到setsid的父进程变成了init进程。由于会话和父进程和shell无关了,因此无论如何shell都无法向该进程发送SIGHUP命令
‘叁’ 如何为“Linux命令”设置快捷键
Linux的一个特色就是其命令多而且功能强大, 频繁输入命令不仅麻烦而且工作量较大,虽然可以使用TAB进行>命令补足,或者使用aliase来简化某个命令的输入,但这并不能从根本上解决敲击键盘次数过多的问题。x0dx0ax0dx0a可以把任何命令或命令的组合指定给键盘上的某个键,可以是Alt+[A-Z],x0dx0aCtrl-[A-Z], Alt+Shift+[A-Z], F1-F12, Ctrl-F[1-12], Alt-F[1-12], Alt+Shift+F[1-12],还有更不可思议的是甚至还可以为功能键加上“参数”,这样你按下那个键的时候,它会等待你输入相应的参数,并根据不同的参数运行不同的命令。x0dx0ax0dx0a当然,有一些热键会被终端所捕获,如常见的Ctrl-D/C/Q/Z等,不过没关系,可用的热键还多着呢!x0dx0ax0dx0a定义热键的配置文件为:/etc/inputrc 或 ~/.inputrc,定义热键的格式如下:x0dx0ax0dx0a"<热键对应的ASCII字符>":"<执行的命令>"x0dx0ax0dx0a其中热键对应的ASCII字符可以通过 "先按Ctrl-V, 然后按热键" 的方式来输入, 如Ctrl-G对应的字符为^G, Alt-P对应的字符为^[p, Ctrl-Alt-H对应的字符为^[^H.x0dx0ax0dx0a可以用/C来代替Ctrl,/M来代替Alt, /M-/C来代替Alt-Ctrl, 如/C-M = Ctrl-M, /M-/C-H = Alt-Ctrl-M. 另外还可以用/e代表^[.x0dx0ax0dx0a先来看一些基本的热键定义,(这里热键里的字母不区分大小写):x0dx0a"^[-":"su -/C-M" # 按Alt+- 执行su - 命令,末尾/C-M表示输入完定义的命令后回车,也可以更简洁地用一个/n来表示.x0dx0ax0dx0a"/M-/C-G":"gaim & &>/dev/null && disown/C-M"x0dx0a# 按Ctrl-Alt-g在当前shell打开gaim, 并脱离该shell独立运行,即:即使你退出了该shell, gaim也不会关闭x0dx0ax0dx0a其他一些组合键可以根据自己的需要配置,偶就不多说了.x0dx0ax0dx0a大家也许会觉得这样定义热键太乱了,而且很难记住,还有一定的限制。这个问题在后面会得到解决。x0dx0ax0dx0a一般情况下,我们可以使用上下方向键来查找命令历史列表,以此重复输入命令,但是方向键离主键盘区太远,如>果频繁使用的话,会耽误不少时间,而且挪动右手时也不太方便,有没有什么办法把方向键的功能转移到我们经常>敲命令的地方呢?如使用Alt+J = Down Arrow 向下查找,Alt+K=Up Arrow 向下查找x0dx0ax0dx0a通过定义热键可以做到这点:x0dx0ax0dx0a"/eh":"^[OD" # move leftx0dx0a# Alt-H 向左移一个字符, 相当于Left Arrowgh, 这里^[OD即向上方向键的ASCII字符,输入方式与前面提到的类似x0dx0a"/el":"^[OC" # move rightx0dx0a# Alt-L 向右移一个字符,相当于Right Arrowx0dx0ax0dx0a"/ej":"^[OB" # move upx0dx0a# Alt-J 向下移动,相当于Up Arrowx0dx0ax0dx0a"/ek":"^[OA" # move downx0dx0a# Alt-K 向上移动,相当于Down Arrowx0dx0ax0dx0a"/ei":"^?" # left earse one characterx0dx0a# Alt-I 向左删除一个字符,相当于Backspacex0dx0ax0dx0a"/eo":delete-char # right earse one characterx0dx0a# Alt-O 向右删除一个字符,相当于Deletex0dx0ax0dx0a"/en":backward-kill-word # left kill one wordx0dx0a# Alt-N 向左删除一个单词x0dx0ax0dx0a"/em":kill-word # right kill one wordx0dx0a# Alt-M 向右删除一个单词x0dx0ax0dx0a"/ea":"^[n^[n^[n^[n^[n^[n^[n" # kill to the headx0dx0a# Alt-A 删除当前位置到开头,也就是多Alt-N几次(A--> ahead)x0dx0ax0dx0a"/ee":"^[m^[m^[m^[m^[m^[m^[m" # kill to the headx0dx0a# Alt-E 删除当前位置到末尾,也就是多Alt-M几次(E--> end)x0dx0ax0dx0a"/ep": insert-last-argumem"x0dx0a# Alt-P 插入上一个命令最后一个参数 (P--> Paste)x0dx0ax0dx0a"/ew": forward-wordx0dx0a# 系统默认Alt-F (forward)跳到当前单词词尾,如果已在词尾,则跳到下一个单词(右边一个单词)词尾x0dx0ax0dx0a"/eq": backward-wordx0dx0a# 系统默认Alt-B (backward)跳到当前单词词首,如果已在词首,则跳到上一个单词(左边一个单词)词首x0dx0ax0dx0a发觉F和B键离得太远,不方便,偶分别改作Alt-Q, Alt-W, 但是Alt-F/B照样可以用x0dx0ax0dx0a这样输入命令的时候几乎可以不用离开主键盘区,而且移动光标,删除字符,删除单词,上下历史命令查找都集中>在一块,比以前方便多了。不过开始可能有些不习惯,就跟使用vi一样,但是多练几次就熟练了。x0dx0ax0dx0aLinux下绝大部分服务的配置是基于配置文件的,一般说来,更改了某个服务的配置文件,要使其立即生效,还需重启该服务直接的或依附的守护进程才行。难道你就不觉得“每次 vi /etc/xxx.conf 完后又 service xxx restart/reload 或 killall -HUP xxx”这样做很繁琐么?如果要配置的服务较多而且要不停地调试呢?况且我们平常使用Linux时难免会不时地终止或启动某个服务进程,输入命令的次数也不少。如果为每个服务都指定一个热键的话,似乎不大可能。如果我们赋予一个热键为一个基本键,而相应的服务为其“参数”,那又如何呢?x0dx0ax0dx0a举个例子,赋予Alt-S (S-->Start)为启动服务的基本键,服务名的前2个字符为启动“参数”,那么就可以像下面那样随意启动某个服务了:x0dx0a"/essm":"service smb start/n"x0dx0a# /es=Alt-s, sm=smb,x0dx0a# 即:按下Alt-s后紧跟着再输入sm(这时输入的sm并不会显示在终端上),就可以启动samba的服务进程了,不必担心按下键与输入“参数”间的时间延迟问题,你按下Alt-s,然后去外面兜一圈回来,再接着输入sm,照样可以。x0dx0ax0dx0a"/esht":"service httpd start/n" # ht=httpd,启动Apache服务x0dx0ax0dx0a类似地,我们赋予x0dx0aAlt-D(D--> shutDown) 为停止服务的基本键x0dx0aAlt-R(R--> Restart) 为重启服务的基本键x0dx0aAlt-T(T--> Status) 为查看服务状态的基本键x0dx0aAlt-C(C--> Configure) 为打开服务对应的主配置文件的基本键x0dx0a如:"/ecnf":"vi /etc/exports/n" # Alt-c+nf 打开NFS的配置文件x0dx0a"/ecsm":"vi /etc/samba/smb.conf/n" # Alt-c+sm 打开smb的配置文件x0dx0ax0dx0a如果某个服务(如ssh)有2个配置文件,可以在其后再加一个数字,如:x0dx0a"/ecssh1":"vi /etc/ssh/sshd_config/n" # 打开sshd服务端配置文件x0dx0a"/ecssh2":"vi /etc/ssh/ssh_config/n" # 打开sshd客户端配置文件x0dx0ax0dx0a如果要执行某个应用程序呢?可以用Alt-x做基本键(x--> eXeccute) 如:x0dx0a"/exga":"gaim & &>/dev/null && disown && clean /n"x0dx0a"/exxm":"xmms & &>/dev/null && disown && clean /n"x0dx0a"/exvm":"vmware & &>/dev/null && disown && clean /n" "/exna":"nautilus & &>/dev/null && disown && clean /n"x0dx0a等等....x0dx0ax0dx0a到现在为止我们只要按1个组合键+2个字符就可以实现下面众多的功能:x0dx0a1. 执行指定的应用程序x0dx0a2. 启动|重启|关闭|指定的服务进程x0dx0a3. 查看指定服务的状态x0dx0a4. 打开指定服务的指定配置文件
‘肆’ 在Linux系统中查看进程及杀死僵尸进程的方法
ps
命令
ps
命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、
进程
是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.
ps
命令及其参数
ps
命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设
备进行通信地,所以如果需要检测其情况,便可以运用
ps
命令了.
该命令语法格式如下:
ps
[选项]
-e
显示所有进程,环境变量
-f
全格式
-h
不显示标题
-l
长格式
-w
宽输出
a
显示终端上地所有进程,包括其他用户地进程
r
只显示正在运行地进程
x
显示没有控制终端地进程
O[+|-]
k1
[,[+|-]
k2
[,…]]
根据
SHORT
KEYS、k1、k2
中快捷键指定地多级排序顺序显示进程列表.
对于
ps
地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面“+”字符是可选地,“-”
字符是倒转指定键地方向.
pids
只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入
空格.比如:ps
-f1,4,5.
以下介绍长命令行选项,这些选项都运用“--”开头:
--sort
X[+|-]
key
[,[+|-]
key
[,…]]
从
SORT
KEYS
段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按
数字升序或者词典顺序.比如:
ps
-jax
-sort=uid,-ppid,+pid.
--help
显示帮助信息.
--version
显示该命令地版本信息.
在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是
ps
运用地内部值,并非
仅用于某些输出格式地伪值.排序键列表见表
4-3.
排序键列表
c
cmd
可执行地简单名称
C
cmdline
完整命令行
f
flags
长模式标志
g
pgrp
进程地组
ID
G
tpgid
控制
tty
进程组
ID
j
cutime
累计用户时间
J
cstime
累计系统时间
k
utime
用户时间
K
stime
系统时间
m
min_flt
次要页错
查找Zombie进程
首先,当桌面程序卡死的时候,你可以尝试进入其他tty终端。切换方式:ctrl
+
alt
+
[1,2,3,4,5,6,7],7是桌面终端
其次,你可以使用top命令查看当前是否有Zombie进程
从上图可以看到僵尸进程数,num
zombie,num大于0,则代表系统存在僵尸进程
最后,利用ps命令查找Zombie进程
复制代码
代码如下:
ps
-A
-ostat,ppid,pid,cmd
|
grep
-e
'^[zZ]'
示例
:
杀死Zombie进程
直接kill
-9
Zombiepid是没有作用的,原因是:Zombie表示进程已经退出,想要清理这样的进程,需要清除其父进程或者等很长时间后内核将其清除
复制代码
代码如下:
kill
-HUP
ppid
后记
不知道为什么我注销之后重新登录还有这个僵尸进程,怀疑是否是LightDM的bug,不过Ubuntu12.04
desktop
display
manager就是LightDM,所以kill
-HUP至少起到了注销的作用,不用重启了
‘伍’ Linux几种中断信号的区别:HUP,INT,KILL,TERM,TSTP
Linux的HUP,INT,KILL,TERM,TSTP中断信号区别为:键入不同、对应操作不同、启用不同。
一、键入不同
1、HUP中断信号:HUP中断信号是当用户键入<Ctrl+X>时由终端驱动程序发送的信号。
2、INT中断信号:INT中断信号是当用户键入<Ctrl+I>时由终端驱动程序发送的信号。
3、KILL中断信号:KILL中断信号是当用户键入<Ctrl+Z>时由终端驱动程序发送的信号。
4、TERM中断信号:TERM中断信号是当用户键入<Ctrl+>时由终端驱动程序发送的信号。
5、TSTP中断信号:TSTP中断信号是当用户键入<Ctrl+T>时由终端驱动程序发送的信号。二、对应操作不同
1、HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。
2、INT中断信号:INT中断信号的对应操作为正常关闭所有进程。
3、KILL中断信号:KILL中断信号的对应操作为强制关闭所有进程。
4、TERM中断信号:TERM中断信号的对应操作为正常的退出进程。
5、TSTP中断信号:TSTP中断信号的对应操作为暂时停用进程。
三、启用不同
1、HUP中断信号:HUP中断信号发送后,可以重新被用户再次输入恢复启用进程。
2、INT中断信号:INT中断信号发送后,不可以重新被用户再次输入恢复启用进程。
3、KILL中断信号:KILL中断信号发送后,不可以重新被用户再次输入恢复启用进程。
4、TERM中断信号:TERM中断信号发送后,可以重新被用户再次输入启用进程。
5、TSTP中断信号:TSTP中断信号发送后,可以重新被用户再次输入继续使用进程。
‘陆’ Linux中的kill -s命令的意思是可以发送指定的信号哈,但信号通常是:TREM和HUP等等
有-s,下面两种写法都对: kill -s 信号名 进程号 kill -信号名 进程号 Usage: kill pid ... Send SIGTERM to every process listed. kill signal pid ... Send a signal to every process listed. kill -s signal pid ... Send a signal to every process listed. kill -l List all signal names. kill -L List all signal names in a nice table. kill -l signal Convert between signal numbers and names. 通过kill -l 可以看到所有信号名
‘柒’ linux怎么查看硬件告警
想知道怎么查看Linux中的硬件告警吗?下面是我带来的关于linux怎么查看硬件告警的内容,欢迎阅读!
Linux查看硬件告警 方法 一:
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出需要的信息。
大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息
/sbin/syslogd
在修改syslog配置后,需要重新启动syslogd守护进程才能使新的配置生效。其命令如下所示。
# killall -HUP syslogd
Red Hat Enterprise Linux 5.2安装后默认就已经在syslog中定义了一些日志文件。
说明
/var/log/message
系统启动后液野的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure
与安全相关的日志信息
/var/log/maillog
与邮件相关的日志信息
/var/log/cron
与定时任务相关的日志信息
/var/log/spooler
与UUCP和news设备相关的日志信息
/var/log/boot.log
守护进程启动和停止相关的日志消息
Linux查看硬件告警方法二:
日志作为普通的文本文件存储在磁盘中,因此可以通过查看文件的命令来查看日志。比如:通过tail命令查看日志的最后10行,通过head命令查看命令的开头10行。
日志文件的默认存储路径是:/var/log
下面是几个重要的日志文件:
/var/log/messages:包括整体系统信息,其中也包含系统启动期间的日志。此外,还包括mail,cron,daemon,kern和auth等内容。
/var/log/syslog:它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息。
/var/log/user.log:记录所有等级用户信息的日志。
/var/log/auth.log:包含系统授权信息,包括用户登录和使用的权限机制等。
要查看最新的10条系统消息就可以使用命令:
tail /var/log/messages
看了"linux怎么查看硬件告警" 文章 内容的人还看:
1. linux中查看硬件信息的方法有哪些
2. 如何查看Linux加载内置模块的信息
3. linux怎么查看内存
4. linux怎么查看cpu的使用率问题
5. 如何正闹运喊确查悄正看Linux机器内存使用情况
6. linux怎么查看内存使用情况
7. linux系统如何查看内存使用情况
8. Linux查看cpu个数
‘捌’ Linux终止前台进程的命令
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。
‘玖’ linux切割、备份大的nohup日志文件
nohup.out日志文件太大了,且一直增长,命令查看日志受阻
①切割老核大文件变成多个小文件
②每天定时保存前一天的日志,重新记录当天日志
1.利用split命令切割
①按文件大小切割大文件:
切割文件:将ohup.out文件每500M切割一个文件放到/home/nginx/logs/newlog/目录下
②按文件行数切割大文件:
查询文件侍扒掘行数:
wc -l b.log
2038711 b.log
按50W行切割一个文件:
split -l 500000 -d -a 4 /home/nginx/logs/b.log /home/nginx/logs/newlog/
2.定时备份前一天日志,重新记录当天此枯日志splitlog.sh
3.定时执行
查看定时任务:
crontab -l
编辑定时任务:
crontab -e
重启定时任务:
删除10天以前的日志文件,此日期为文件本身的时间,非日志内容时间