본관은 전주(全州). 자는 사직(士直). 영조 때에 무과에 급제하여, 1763년(영조 39) 당시 전라좌수사로서 혹정하였다는 사헌부의 탄핵으로 파직되었으나 1766년 승지를 거쳐 황해병사에 임명되었다.
정조가 즉위한 뒤 여사대장(轝士大將)·경기수사·금군별장·삼도수군통제사·어영대장·포도대장 등을 지냈다. 1782년(정조 6) 금위대장 재임시 금중(禁中) 소요로 동복현으로 유배당하였으나 곧 풀려나, 금위대장·포도대장·어영대장·훈련대장 등을 역임하였다.
1788년 정조의 황단(皇壇) 행차 때에 북영(北營)에 주둔하라는 명을, 병을 칭하고 이행하지 않았다고 하여 사판(仕版: 벼슬에 오른 자들의 명단)에서 이름이 지워졌다. 1791년 여주목사에 특보되고 수원부사를 거쳐, 1793년 형조판서에 임명되었다. 그 뒤 어영대장·훈련대장·금위대장·한성부판윤·포도대장 등을 지냈다. 시호는 무숙(武肅)이다.