pgrep,pidof工具的使用
博客pgrep,pidof工具的使用
最灵活:ps 选项 | 其它命令
按预定义的模式:pgrep
pgrep [options] pattern
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
按确切的程序名称:/sbin/pidof
一-t terminal: 显示与指定终端相关的进程
[root@centos72 ~]# pgrep -t pts/1
[root@centos72 ~]# pgrep -t pts/3
[root@centos72 ~]# tty
/dev/pts/2
[root@centos72 ~]# pgrep -t pts/2
[root@centos72 ~]# pstree -p
systemd(1)─┬─NetworkManager(544)─┬─{NetworkManager}(591)
│ └─{NetworkManager}(593)
├─VGAuthService(545)
├─agetty(558)
├─auditd(515)───{auditd}(516)
├─crond(555)
├─dbus-daemon(540)───{dbus-daemon}(542)
├─httpd(2295)─┬─httpd(2296)
│ ├─httpd(2297)
│ ├─httpd(2298)
│ ├─httpd(2299)
│ └─httpd(2300)
├─irqbalance(538)
├─master(869)─┬─pickup(2590)
│ └─qmgr(871)
├─polkitd(539)─┬─{polkitd}(541)
│ ├─{polkitd}(543)
│ ├─{polkitd}(569)
│ ├─{polkitd}(570)
│ └─{polkitd}(573)
├─rsyslogd(787)─┬─{rsyslogd}(790)
│ └─{rsyslogd}(791)
├─sshd(785)─┬─sshd(2053)───bash(2057)─┬─head(2987)
│ │ └─watch(2986)
│ └─sshd(2110)───bash(2114)───pstree(3658)
├─systemd-journal(357)
├─systemd-logind(548)
├─systemd-udevd(388)
├─tuned(784)─┬─{tuned}(1026)
│ ├─{tuned}(1027)
│ ├─{tuned}(1028)
│ └─{tuned}(1041)
└─vmtoolsd(546)───{vmtoolsd}(580)
二-l: 显示进程名
[root@centos72 ~]# pgrep -t pts/2 -l
2057 bash
[root@centos72 ~]# pgrep -lt pts/2
2057 bash
注意必须和t组合起来
[root@centos72 ~]# pgrep -lt pts/1
1259 bash
[root@centos72 ~]# pgrep -l pts/1
三-a: 显示完整格式的进程名
注意t选项是不可少的
[root@centos72 ~]# pgrep -at pts/1
1259 -bash
[root@centos72 ~]# pgrep -a pts/1
[root@centos72 ~]# pgrep -a pts/
在一个终端上查看另外一个终端的进程
[root@centos72 ~]# pgrep -at pts/3
2114 -bash
3840 su - wang
3841 -bash
3864 passwd
[root@centos72 ~]# tty
/dev/pts/
另外一个终端
[root@centos72 ~]# tty
/dev/pts/3
[root@centos72 ~]# su - wang
Last login: Sat May 18 16:20:19 CST 2019 on pts/3
[wang@centos72 ~]$ passwd
Changing password for user wang.
Changing password for wang.
(current) UNIX password:
注意a选项不能在t后面,否则不会显示。因为t后面必须是终端,a相当于小三
[root@centos72 ~]# pgrep -ta pts/3
[root@centos72 ~]# pgrep -ta pts/2
[root@centos72 ~]# pgrep -ta pts/
四-P pid: 显示指定进程的子进程
[root@centos72 ~]# pgrep -at pts/3
2114 -bash
3840 su - wang
3841 -bash
3864 passwd
[root@centos72 ~]# pgrep -P 3840
[root@centos72 ~]# pstree -p
systemd(1)─┬─NetworkManager(544)─┬─{NetworkManager}(591)
│ └─{NetworkManager}(593)
├─VGAuthService(545)
├─agetty(558)
├─auditd(515)───{auditd}(516)
├─crond(555)
├─dbus-daemon(540)───{dbus-daemon}(542)
├─httpd(2295)─┬─httpd(2296)
│ ├─httpd(2297)
│ ├─httpd(2298)
│ ├─httpd(2299)
│ └─httpd(2300)
├─irqbalance(538)
├─master(869)─┬─pickup(2590)
│ └─qmgr(871)
├─polkitd(539)─┬─{polkitd}(541)
│ ├─{polkitd}(543)
│ ├─{polkitd}(569)
│ ├─{polkitd}(570)
│ └─{polkitd}(573)
├─rsyslogd(787)─┬─{rsyslogd}(790)
│ └─{rsyslogd}(791)
├─sshd(785)─┬─sshd(2053)───bash(2057)───pstree(3875)
│ └─sshd(2110)───bash(2114)───su(3840)───bash(3841)───passwd(3864)
├─systemd-journal(357)
├─systemd-logind(548)
├─systemd-udevd(388)
├─tuned(784)─┬─{tuned}(1026)
│ ├─{tuned}(1027)
│ ├─{tuned}(1028)
│ └─{tuned}(1041)
└─vmtoolsd(546)───{vmtoolsd}(580)
五-u uid: effective user,生效者
[root@centos72 ~]# su - wang
Last login: Sat May 18 16:20:19 CST 2019 on pts/3
[wang@centos72 ~]$ passwd
Changing password for user wang.
Changing password for wang.
(current) UNIX password:
[root@centos72 ~]# pgrep -lu wang
3841 bash
注意pgrep, pkill两个命令的帮助文档是一样的
PGREP(1) User Commands PGREP(1) NAME
pgrep, pkill - look up or signal processes based on name and other attributes
还支持扩展的正则表达式
因为pgrep是ps和grep的结合
OPERANDS
pattern
Specifies an Extended Regular Expression for matching against the process names or com‐
mand lines.
六结合正则表达式
注意可以使用ps结合grep也可以搜索出来的
[root@centos72 ~]# su - wang
Last login: Sat May 18 16:21:27 CST 2019 on pts/3
[wang@centos72 ~]$ passwd
Changing password for user wang.
Changing password for wang.
(current) UNIX password:
[root@centos72 ~]# pgrep -l "pass.*"
3928 passwd
[root@centos72 ~]# pgrep -l "ba.*"
21 writeback
538 irqbalance
2057 bash
2114 bash
3904 bash
[root@centos72 ~]# pgrep -l "bas.*"
2057 bash
2114 bash
3904 bash
七按确切的程序名称:pidof bash
[root@centos72 ~]# pgrep -l "bas.*"
2057 bash
2114 bash
3904 bash
[root@centos72 ~]# pidof bash
3904 2114
[root@centos72 ~]# pstree -p
systemd(1)─┬─NetworkManager(544)─┬─{NetworkManager}(591)
│ └─{NetworkManager}(593)
├─VGAuthService(545)
├─agetty(558)
├─auditd(515)───{auditd}(516)
├─crond(555)
├─dbus-daemon(540)───{dbus-daemon}(542)
├─httpd(2295)─┬─httpd(2296)
│ ├─httpd(2297)
│ ├─httpd(2298)
│ ├─httpd(2299)
│ └─httpd(2300)
├─irqbalance(538)
├─master(869)─┬─pickup(2590)
│ └─qmgr(871)
├─polkitd(539)─┬─{polkitd}(541)
│ ├─{polkitd}(543)
│ ├─{polkitd}(569)
│ ├─{polkitd}(570)
│ └─{polkitd}(573)
├─rsyslogd(787)─┬─{rsyslogd}(790)
│ └─{rsyslogd}(791)
├─sshd(785)─┬─sshd(2053)───bash(2057)───pstree(3936)
│ └─sshd(2110)───bash(2114)───su(3903)───bash(3904)───passwd(3928)
├─systemd-journal(357)
├─systemd-logind(548)
├─systemd-udevd(388)
├─tuned(784)─┬─{tuned}(1026)
│ ├─{tuned}(1027)
│ ├─{tuned}(1028)
│ └─{tuned}(1041)
└─vmtoolsd(546)───{vmtoolsd}(580)
在6上设置httpd为没有线程的进程
[root@centos65 ~]# diff /etc/sysconfig/httpd{,.bak}
[root@centos65 ~]# cat /etc/sysconfig/httpd
# Configuration file for the httpd service.
#
# The default processing model (MPM) is the process-based
# 'prefork' model. A thread-based model, 'worker', is also
# available, but does not work with some modules (such as PHP).
# The service must be stopped before changing this variable.
#
#HTTPD=/usr/sbin/httpd.worker
#
# To pass additional options (for instance, -D definitions) to the
# httpd binary at startup, set OPTIONS here.
#
#OPTIONS=
#
# By default, the httpd process is started in the C locale; to
# change the locale in which the server runs, the HTTPD_LANG
# variable can be set.
#
#HTTPD_LANG=C
#
# By default, the httpd process will create the file
# /var/run/httpd/httpd.pid in which it records its process
# identification number when it starts. If an alternate location is
# specified in httpd.conf (via the PidFile directive), the new
# location needs to be reported in the PIDFILE.
#
#PIDFILE=/var/run/httpd/httpd.pid
[root@centos65 ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using centos65.jd.com for ServerName
[ OK ]
[root@centos65 ~]#
[root@centos65 ~]# pstree -p
init(1)─┬─abrt-dump-oops(1811)
├─abrtd(1801)
├─acpid(1428)
├─atd(1858)
├─auditd(1251)───{auditd}(1252)
├─automount(1511)─┬─{automount}(1512)
│ ├─{automount}(1513)
│ ├─{automount}(1528)
│ └─{automount}(1531)
├─crond(1843)
├─dbus-daemon(1389)───{dbus-daemon}(1391)
├─dnsmasq(2023)
├─hald(1440)─┬─hald-runner(1441)─┬─hald-addon-acpi(1495)
│ │ └─hald-addon-inpu(1473)
│ └─{hald}(1442)
├─httpd(12606)─┬─httpd(12608)
│ ├─httpd(12609)
│ ├─httpd(12610)
│ ├─httpd(12611)
│ ├─httpd(12612)
│ ├─httpd(12613)
│ ├─httpd(12614)
│ └─httpd(12615)
├─irqbalance(1307)
├─ksmtuned(1830)───sleep(12576)
├─libvirtd(1875)─┬─{libvirtd}(1876)
│ ├─{libvirtd}(1877)
│ ├─{libvirtd}(1878)
│ ├─{libvirtd}(1879)
│ ├─{libvirtd}(1880)
│ ├─{libvirtd}(1881)
│ ├─{libvirtd}(1882)
│ ├─{libvirtd}(1883)
│ ├─{libvirtd}(1884)
│ └─{libvirtd}(1885)
├─master(1772)─┬─pickup(11801)
│ └─qmgr(1779)
├─mingetty(1916)
├─mingetty(1918)
├─mingetty(1920)
├─mingetty(1922)
├─mingetty(1924)
├─mingetty(1926)
├─rpc.idmapd(1633)
├─rpc.mountd(1588)
├─rpc.rquotad(1583)
├─rpc.statd(1354)
├─rpcbind(1332)
├─rsyslogd(1273)─┬─{rsyslogd}(1274)
│ ├─{rsyslogd}(1276)
│ └─{rsyslogd}(1277)
├─sshd(1682)───sshd(2134)───bash(2138)───pstree(12619)
├─udevd(536)─┬─udevd(1933)
│ └─udevd(1934)
└─xinetd(1693)
[root@centos65 ~]# pidof httpd
12615 12614 12613 12612 12611 12610 12609 12608
停止服务,返回值为1
[root@centos65 ~]# service httpd stop
Stopping httpd: [ OK ]
[root@centos65 ~]# pidof httpd
[root@centos65 ~]# echo $?
重启服务之后显示为0
pidof httpd的作用就是检查进程是否正常工作,如果进程死了那么就要激活
[root@centos65 ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using centos65.jd.com for ServerName
[ OK ]
[root@centos65 ~]# pidof httpd
12723
[root@centos65 ~]# echo $?
脚本之间是可以自己调用自己
如果服务运行那么就什么也不做,否则就重启服务
[root@centos65 ~]# pstree -p
init(1)─┬─abrt-dump-oops(1811)
├─abrtd(1801)
├─acpid(1428)
├─atd(1858)
├─auditd(1251)───{auditd}(1252)
├─automount(1511)─┬─{automount}(1512)
│ ├─{automount}(1513)
│ ├─{automount}(1528)
│ └─{automount}(1531)
├─crond(1843)
├─dbus-daemon(1389)───{dbus-daemon}(1391)
├─dnsmasq(2023)
├─hald(1440)─┬─hald-runner(1441)─┬─hald-addon-acpi(1495)
│ │ └─hald-addon-inpu(1473)
│ └─{hald}(1442)
├─httpd(12723)─┬─httpd(12726)
│ ├─httpd(12727)
│ ├─httpd(12728)
│ ├─httpd(12729)
│ ├─httpd(12730)
│ ├─httpd(12731)
│ ├─httpd(12732)
│ └─httpd(12733)
├─irqbalance(1307)
├─ksmtuned(1830)───sleep(13100)
├─libvirtd(1875)─┬─{libvirtd}(1876)
│ ├─{libvirtd}(1877)
│ ├─{libvirtd}(1878)
│ ├─{libvirtd}(1879)
│ ├─{libvirtd}(1880)
│ ├─{libvirtd}(1881)
│ ├─{libvirtd}(1882)
│ ├─{libvirtd}(1883)
│ ├─{libvirtd}(1884)
│ └─{libvirtd}(1885)
├─master(1772)─┬─pickup(11801)
│ └─qmgr(1779)
├─mingetty(1916)
├─mingetty(1918)
├─mingetty(1920)
├─mingetty(1922)
├─mingetty(1924)
├─mingetty(1926)
├─rpc.idmapd(1633)
├─rpc.mountd(1588)
├─rpc.rquotad(1583)
├─rpc.statd(1354)
├─rpcbind(1332)
├─rsyslogd(1273)─┬─{rsyslogd}(1274)
│ ├─{rsyslogd}(1276)
│ └─{rsyslogd}(1277)
├─sshd(1682)─┬─sshd(2134)───bash(2138)
│ └─sshd(12948)───bash(12961)───pstree(13101)
├─udevd(536)─┬─udevd(1933)
│ └─udevd(1934)
└─xinetd(1693)
创建脚本
[root@centos65 ~]# vim /bin/f1.sh
[root@centos65 ~]# ll /bin/f1.sh
-rw-r--r--. 1 root root 101 May 18 17:12 /bin/f1.sh
[root@centos65 ~]# chmod a+x /bin/f1.sh
[root@centos65 ~]# ll /bin/f1.sh
-rwxr-xr-x. 1 root root 101 May 18 17:12 /bin/f1.sh
[root@centos65 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos65 ~]# bash /bin/f1.sh
^C
[root@centos65 ~]# cat /bin/f1.sh
#!/bin/bash
sleep 2
pidof httpd &> /dev/null || service httpd restart &> /dev/null
f1.sh
执行脚本
生成了很多的子进程,不能显示全部的,所以就显示+
sshd(1682)─┬─sshd(2134)───bash(2138)───bash(13112)───f1.sh(13116)───f1.sh(13121)───f1.sh(1312+
[root@centos65 ~]# pstree -p
init(1)─┬─abrt-dump-oops(1811)
├─abrtd(1801)
├─acpid(1428)
├─atd(1858)
├─auditd(1251)───{auditd}(1252)
├─automount(1511)─┬─{automount}(1512)
│ ├─{automount}(1513)
│ ├─{automount}(1528)
│ └─{automount}(1531)
├─crond(1843)
├─dbus-daemon(1389)───{dbus-daemon}(1391)
├─dnsmasq(2023)
├─hald(1440)─┬─hald-runner(1441)─┬─hald-addon-acpi(1495)
│ │ └─hald-addon-inpu(1473)
│ └─{hald}(1442)
├─httpd(12723)─┬─httpd(12726)
│ ├─httpd(12727)
│ ├─httpd(12728)
│ ├─httpd(12729)
│ ├─httpd(12730)
│ ├─httpd(12731)
│ ├─httpd(12732)
│ └─httpd(12733)
├─irqbalance(1307)
├─ksmtuned(1830)───sleep(13111)
├─libvirtd(1875)─┬─{libvirtd}(1876)
│ ├─{libvirtd}(1877)
│ ├─{libvirtd}(1878)
│ ├─{libvirtd}(1879)
│ ├─{libvirtd}(1880)
│ ├─{libvirtd}(1881)
│ ├─{libvirtd}(1882)
│ ├─{libvirtd}(1883)
│ ├─{libvirtd}(1884)
│ └─{libvirtd}(1885)
├─master(1772)─┬─pickup(11801)
│ └─qmgr(1779)
├─mingetty(1916)
├─mingetty(1918)
├─mingetty(1920)
├─mingetty(1922)
├─mingetty(1924)
├─mingetty(1926)
├─rpc.idmapd(1633)
├─rpc.mountd(1588)
├─rpc.rquotad(1583)
├─rpc.statd(1354)
├─rpcbind(1332)
├─rsyslogd(1273)─┬─{rsyslogd}(1274)
│ ├─{rsyslogd}(1276)
│ └─{rsyslogd}(1277)
├─sshd(1682)─┬─sshd(2134)───bash(2138)───bash(13112)───f1.sh(13116)───f1.sh(13121)───f1.sh(1312+
│ └─sshd(12948)───bash(12961)───pstree(13149)
├─udevd(536)─┬─udevd(1933)
│ └─udevd(1934)
└─xinetd(1693)
一直执行脚本,并且停止httpd服务
[root@centos65 ~]# bash /bin/f1.sh
进程一会儿就会自动激活了
[root@centos65 ~]# service httpd stop
Stopping httpd: [ OK ]
[root@centos65 ~]# pidof httpd
13424
[root@centos65 ~]# pidof httpd
13424
[root@centos65 ~]# pidof httpd
13424
[root@centos65 ~]# pidof httpd
13429
[root@centos65 ~]# pidof httpd
13429
[root@centos65 ~]# pidof httpd
13429
[root@centos65 ~]# pidof httpd
13449 13448 13447 13446 13445 13444 13443 13442 13429
[root@centos65 ~]# pidof httpd
13449 13448 13447 13446 13445 13444 13443 13442
在有些情况下一个脚本调用另外一个脚本
修改脚本
此脚本实际上是一种循环的变种
[root@centos65 ~]# vim /bin/f1.sh
[root@centos65 ~]# cat /bin/f1.sh
#!/bin/bash
sleep 2
pidof httpd &> /dev/null || service httpd restart &> /dev/null
source f1.sh [root@centos65 ~]# bash /bin/f1.sh
不会生成子进程了,因为source是自己调用自己
[root@centos65 ~]# pstree -p
init(1)─┬─abrt-dump-oops(1811)
├─abrtd(1801)
├─acpid(1428)
├─atd(1858)
├─auditd(1251)───{auditd}(1252)
├─automount(1511)─┬─{automount}(1512)
│ ├─{automount}(1513)
│ ├─{automount}(1528)
│ └─{automount}(1531)
├─crond(1843)
├─dbus-daemon(1389)───{dbus-daemon}(1391)
├─dnsmasq(2023)
├─hald(1440)─┬─hald-runner(1441)─┬─hald-addon-acpi(1495)
│ │ └─hald-addon-inpu(1473)
│ └─{hald}(1442)
├─httpd(13429)─┬─httpd(13442)
│ ├─httpd(13443)
│ ├─httpd(13444)
│ ├─httpd(13445)
│ ├─httpd(13446)
│ ├─httpd(13447)
│ ├─httpd(13448)
│ └─httpd(13449)
├─irqbalance(1307)
├─ksmtuned(1830)───sleep(15221)
├─libvirtd(1875)─┬─{libvirtd}(1876)
│ ├─{libvirtd}(1877)
│ ├─{libvirtd}(1878)
│ ├─{libvirtd}(1879)
│ ├─{libvirtd}(1880)
│ ├─{libvirtd}(1881)
│ ├─{libvirtd}(1882)
│ ├─{libvirtd}(1883)
│ ├─{libvirtd}(1884)
│ └─{libvirtd}(1885)
├─master(1772)─┬─pickup(13426)
│ └─qmgr(1779)
├─mingetty(1916)
├─mingetty(1918)
├─mingetty(1920)
├─mingetty(1922)
├─mingetty(1924)
├─mingetty(1926)
├─rpc.idmapd(1633)
├─rpc.mountd(1588)
├─rpc.rquotad(1583)
├─rpc.statd(1354)
├─rpcbind(1332)
├─rsyslogd(1273)─┬─{rsyslogd}(1274)
│ ├─{rsyslogd}(1276)
│ └─{rsyslogd}(1277)
├─sshd(1682)─┬─sshd(2134)───bash(2138)───bash(15223)───sleep(15244)
│ └─sshd(12948)───bash(12961)───pstree(15246)
├─udevd(536)─┬─udevd(1933)
│ └─udevd(1934)
└─xinetd(1693)
服务停止之后还会生成进程
[root@centos65 ~]# pidof httpd
13449 13448 13447 13446 13445 13444 13443 13442 13429
[root@centos65 ~]# service httpd stop
Stopping httpd: [ OK ]
[root@centos65 ~]# pidof httpd
15380 15379 15378 15377 15376 15375 15374 15373
监控进程的时候可以写一个类似的脚本对重要的进程进行监控,比如阿帕奇、nginx、tomcat等等,特别是在小型环境里面使用不到像zabbix这么复杂的软件。
pgrep,pidof工具的使用的更多相关文章
- 给Android系统安装busybox
转自:http://blog.csdn.net/lxgwm2008/article/details/38925051 busybox号称Linux平台的瑞士军刀,它集成了100多个最常用的Linux命 ...
- ID
id 编辑 身份标识号.账号.唯一编码.专属号码.工业设计.国家简称.法律词汇.通用账户.译码器.软件公司等,各类专有词汇缩写. 身份证,身份识别,是一种身份证明. 中文名 身份证,帐号,工业设计,通 ...
- Linux下的进程管理
在操作系统系统中,进程是一个非常重要的概念. 一.Linux中进程的相关知识 1.什么是进程呢? 通俗的来说进程是运行起来的程序.唯一标示进程的是进程描述符(PID),在linux内核中是通过task ...
- 成为linux的合格公民
前言: 该片文章献给申请linux国籍的所有瘾君子们: 还记得17年的勒索病毒感染了无数的window操作系统. 在windows上待久的公民会渴望有无另一个世界,简单的图形化操作使得一切都变的 ...
- Linux学习笔记03
一.Linux常见命令 file:查看文件类型(windows用扩展名识别文件类型) 语法:file [options] [args] -b:显示结果时,不显示文件名 -c:显示执行file命令的执行 ...
- 马哥Linux SysAdmin学习笔记(二)
Linux网络属性管理: 局域网:以太网,令牌环网 Ethernet:CSMA/CD 冲突域 广播域 MAC:media access control地址 48bit: 24bits 24bits ...
- Linux命令行程序和内建指令
摘录百度分类 文件系统 cat cd chmod chown chgrp cksum cmp cp du df fsck fuser ln ls lsattr lsof mkdir mount mv ...
- Unix分类学习
调试 shell # bash -x script.sh 设置终端背景色 setterm -background black 一.网络 1.网卡状态 mii-tool -v ethtool eth0 ...
- C语言一些基础知识
#include<bits/stdc++.h> #include<bits/stdc++.h>包含C++的所有头文件,看见别人用这个函数,然后就能直接用vector,set,s ...
随机推荐
- mysql_DML_select_聚合join
聚合函数: select avg(salary)//平均值 from wsb; select sum(salary)//总和 from wsb; select max(salary)//最大 from ...
- 002-Visio绘制时序图
一.概述 1.1.什么时候使用 当编码的时候,知道有的用例的业务逻辑按照比较确定的时间先后顺序进行展开.这时候,我们就需要知道我们设计的系统中的不同类之间传递消息(可以认为是不同对象函数间的调用)要按 ...
- Oracle--索引视图序列等对象
---恢复内容开始--- 索引 与表类似,不仅需要在DD中保存索引的定义,还需要在表空间为它分配实际的存储空间. 将索引和对应的表分别存放在不同硬盘的不同表空间中能够提高查询的速度,因为Oracle能 ...
- Flannel - 配置
原文地址 flannel 从 ETCD 中读取配置. 默认情况下,flannel 从 /coreos.com/network/config 中读取配置,可以使用 --etcd-prefix 覆盖. 通 ...
- Vagrant 入门 - 同步目录(synced folders)
原文地址 尽管可以非常轻松的启动一台虚拟机,但很少有人希望通过 SSH 使用基于终端的编辑器来编辑文件.幸运的是,借助 Vagrant 你不需要这样做.通过使用同步目录,Vagrant 会自动同步 g ...
- 精讲 org.w3c.dom(java dom)解析XML文档
org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...
- Vue访问子组件实例或子元素
1 尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件(例如,调用子组件的方法).为了达到这个目的,你可以通过 ref 特性为这个子组件赋予一个 ID 引用 ...
- sql 为什么要用where 1=1?
之前一直不太明白,sql语句里为什么要写where 1=1 提升某种执行效率? 其实,1=1 是永恒成立的,意思无条件的,也就是说在SQL语句中有没有这个1=1都可以. 这个1=1常用于应用程序根据用 ...
- poj3126Prime Path (BFS+素数筛)
素数筛:需要一个数组进行标记 最小的素数2,所有是2的倍数的数都是合数,对合数进行标记,然后找大于2的第一个非标记的数(肯定是素数),将其倍数进行标记,如此反复,若是找n以内的所有素数,只需要对[2, ...
- Support Vector Machine(3):Soft Margin 平衡之美
很多材料上面讲道“引入Soft Margin的原因是因为数据线性不可分”,个人认为有些错误,其实再难以被分解的数据,如果我们用很复杂的弯弯绕曲线去做,还是可以被分解,并且映射到高维空间后认为其线性可分 ...