---
title: "pkill -f tự giết chính mình"
date: 2026-11-09
tags: [Công cụ]
reading_time: 1 phút
author: Cris
url: https://cris-blog.pages.dev/posts/pkill-f-tu-giet-chinh-minh/
---

# pkill -f tự giết chính mình

> Exit code 144 và một bài học về việc khớp theo dòng lệnh.

**TL;DR**

- pkill -f khớp cả dòng lệnh của shell đang chạy nó.
- Dùng pgrep -af để xem trước, rồi kill theo PID.

Mình gõ một dòng dọn dẹp: `pkill -f "git clone ssh://..."; sleep 1; ...`. Lệnh thoát với exit code 144, mọi thứ phía sau biến mất, kể cả một job chạy nền có cùng dòng lệnh. Không có thông báo lỗi nào.

## Chuyện gì xảy ra

`-f` bắt `pkill` khớp mẫu với **toàn bộ dòng lệnh**, không chỉ tên tiến trình. Shell đang chạy chuỗi lệnh của mình có dòng lệnh chứa đúng cụm `git clone ssh://...`, vì cụm đó nằm ngay trong chuỗi mình vừa gõ. Pkill khớp chính shell đó và giết nó, và job nền chứa cùng mẫu cũng chết theo.

```shell
pkill -f "git clone ssh://example"   # có thể giết cả shell chạy dòng này
```

## Cách làm lại cho an toàn

Nhìn trước rồi mới giết, và giết theo PID cụ thể:

```shell
pgrep -af "git-upload-pack" | cut -c1-120
kill 2571919
```

> **Ghi chú:** Muốn dùng `pkill -f` trong script thì viết mẫu sao cho nó không khớp chính nó, ví dụ `[g]it clone`. Cách này hơi khó đọc, nên mình ít dùng.

Quy tắc mình giữ lại: lệnh kill nào cũng phải có một lệnh in danh sách đứng ngay trước. Lệnh nhìn trước không tốn gì, còn kill nhầm thì tốn cả phiên làm việc.

## Status

- **Đã thử:** pgrep -af rồi kill theo PID, dọn đúng tiến trình ssh bị treo.
- **Chưa thử:** pkill với cgroup hoặc systemd unit.
- **Sai ở đâu:** Gõ pkill -f ngay trong chuỗi lệnh chứa chính mẫu cần tìm.

---

*Viết bởi Cris · cris.blog · 09/11/2026*
