1576년(선조 9) 무과에 급제해 선전관에 임명되었다. 그 뒤 거산도찰방에 기용되고 안원보권관(安原堡權管)을 역임하였다. 이어 다시 선전관이 되어 통신사 황윤길(黃允吉) 일행을 따라 일본에 다녀왔다. 그 뒤 제용감주부(濟用監主簿)를 거쳐, 동복현감에 임명되었다. 이후 장차 있을 왜란에 대비해 무예의 단련에 열중하였다. 일본을 시찰하고 돌아온 뒤 일본이 전쟁을 일으킬 것이라는 황윤길의 예상과 뜻을 같이하게 되면서 이에 대한 준비를 하였던 것이다.
1592년 임진왜란이 일어나자, 전라도관찰사 이광(李洸)을 따라 군대를 이끌고 용인에서 왜군과 대적했으나 패하였다. 이 후 남하하다가 진안에 침입한 왜적 선봉장을 사살하고 이어 안덕원(安德院)에 침입한 적을 격퇴하였다. 그리고 훈련원판관으로 이현전투(梨峴戰鬪)에 참가해 왜적을 격퇴하였다. 이 공으로 익산군수로 충청도조방장을 겸하였다.
1593년 2월 전라병사 선거이(宣居怡)를 따라 수원에서 왜군을 맞아 싸웠다. 3월에는 충청도병마절도사가 되어 진(陣)을 안성으로 옮겼다. 여기서 군대를 훈련시키고 대오를 정비해 죽산성에 있는 적과 대치하였다. 이 때 적장 후쿠시마 마사노리(福島正則)가 안산성을 탈취하고자 죽산부성(竹山府城)을 나와 안성으로 진군하였다. 이에 군사를 이끌고 왜군에 접전해 죽산성을 점령했으며, 퇴각하는 왜군을 상주까지 추격해 대파하였다.
그 뒤 6월 적의 대군이 진주를 공략하자 창의사(倡義使) 김천일(金千鎰), 병마절도사 최경회(崔慶會)와 함께 진주성으로 들어갔다. 그리고 성을 굳게 지키며 9일간이나 용전하다가 장렬하게 전사하였다. 뒤에 좌찬성에 추증되고, 진주의 창렬사(彰烈祠), 남원의 민충사(愍忠祠)에 제향되었다. 시호는 무민(武愍)이다.